SSL
Secure Sockets Layer 安全套接层,及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密
服务功能
- 认证用户和服务器,确保数据发送到正确的客户机和服务器
- 保证数据的机密性,防止数据中途被窃取
- 维护数据的完整性,确保数据在传输过程中不被篡改
服务器类型
- Tomcat 5.x
- Nginx
- IIS
- Apache 2.x
- IBM HTTP SERVER 6.0[1]
工作流程
服务器认证阶段
客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接
服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息
客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器
服务器回复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器
用户认证阶段
在此之前,服务器已经通过了客户认证
经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证
OpenSSL
OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。他是SSL的开源实现
库文件
- libcrypto:通用加密库
- libssl:TLS/SSL的实现,基于回话的实现了身份认证,数据机密性和回话完整性的库文件
命令和选项
openssl 是 Linux 下一个多功能命令行工具,可以实现私有证书颁发机构
常用选项
1 | -a # 对加密后的数据进行base64编码,或解密前先对数据进行base64解码 |
常用子命令
1 | openssl ? # 获得子命令 |