SSL/TSL及openssl的使用
一、什么是HTTPS?
HTTPS,全称为 Hypertext Transfer Protocol Secure,是一种通过加密通道传输数据的安全协议。它是 HTTP 协议的安全版本,用于在 Web 浏览器和 Web 服务器之间进行安全的数据传输。
HTTPS 在传输过程中使用了 SSL(Secure Sockets Layer)或 TLS(Transport Layer Security)协议来加密数据,确保敏感信息在传输过程中不会被窃取或篡改。
二、HTTP的存在的问题已经HTTPS如何解决?
HTTP存在的问题:
- 明文传输,内容可能被盗用
- 不进行通信方的验证,有可能遭遇伪装
- 无法验证报文的完整性,请求报文可能被篡改
HTTPS的解决方案:
- 进行加密处理
- 进行身份校验
- 进行完整性校验
HTTPS=HTTP+TSL/SSL
三、什么是SSL/TLS
TLS(Transport Layer Security)和 SSL(Secure Sockets Layer)是用于保护网络通信的安全协议。它们都提供了加密和认证机制,用于确保数据传输的机密性和完整性。
SSL 是最早的安全协议,而 TLS 是在 SSL 的基础上发展起来的。目前广泛使用的版本是 TLS 1.2 和 TLS 1.3。TLS 1.3 是最新的协议版本,在安全性、性能和功能方面有一些改进。
TLS 和 SSL 主要用于以下两个方面:
- 加密通信:
TLS/SSL使用加密算法来对数据进行加密,防止第三方截获和窃听通信内容。它可以确保数据在传输过程中的隐私性。 - 身份认证:
TLS/SSL还提供了身份验证机制,用于确认通信双方的身份,并确保数据只发送到正确的接收方。这可以防止恶意用户冒充其他用户或服务器。
SSL是最早的用来做https,TLS是SSL升级版 提高了安全性 并解决了,SSL存在的一些安全性问题,SSl/TLS工作原理类似,TLS/SSL主要在应用层和传输层之间作用
四、常见的加密方式
- 对称加密
常见的算法有:AESDES加密
发送端:
AES算法 + 密钥(今生永相随)+ 明文(吃面) -> XMZSXMZS==接收端:
AES + 密钥(今生永相随)+ 密文( XMZSXMZS==) -> 吃面
- 非对称加密
常见的算法有:RSA DSA 加密
发送端:
RSA算法 + 公钥 +明文(吃面) -> XMZSXMZS==接收端:
RAS + 私钥 +密文( XMZSXMZS==) -> 吃面
五、openSSL生成私钥
在 SSL/TLS 加密通信中,一般需要使用三个文件来完成证书相关操作,即:
-
私钥文件(例如 “private-key.pem”),用于对加密数据进行解密操作。
-
证书签名请求文件(例如 “certificate.csr”),用于向
CA申请 SSL/TLS证书签名。 -
SSL/TLS证书文件(例如 “certificate.pem”),用于对客户端发送的请求进行验证,以确保通信安全可靠。
私钥文件用于对数据进行解密操作,保证了通信的机密性;证书签名请求文件包含了请求者的身份信息和公钥等信息,需要被发送给 CA 进行签名,从而获取有效的 SSL/TLS 证书;SSL/TLS 证书文件则包含了签名后的证书信息,被用于客户端和服务器之间的身份验证,以确保通信的安全性和可靠性。
通过使用这三个文件进行密钥交换和身份验证,SSL/TLS 可以实现加密通信以及抵御可能的中间人攻击,提高了通信的安全性和保密性。
生成私命令
1 | openssl genpkey -algorithm RSA -out private-key.pem -aes256 |
参数说明:
openssl: OpenSSL 命令行工具的名称。
genpkey: 生成私钥的命令。
-algorithm RSA: 指定生成 RSA 私钥。
-out private-key.pem: 将生成的私钥保存为 private-key.pem 文件。
-aes256: 为私钥添加 AES 256 位加密,以保护私钥文件不被未经授权的人访问。
Enter PEM pass phrase 123 密码短语生成pem文件的时候需要
生成pem证书文件
1 | openssl req -new -key private-key.pem -out certificate.csr |
req: 表示使用 X.509 证书请求管理器 (Certificate Request Management) 功能模块。
-new: 表示生成新的证书签名请求。
-key private-key.pem: 表示使用指定的私钥文件 “private-key.pem” 来加密证书签名请求中的密钥对。
-out certificate.csr: 表示输出生成的证书签名请求到文件 certificate.csr 中。该文件中包含了申请者提供的一些证书请求信息,例如公钥、授权主体的身份信息等。
Country Name (2 letter code) []:CN 国家
State or Province Name (full name) []:BJ 省份
Locality Name (eg, city) []:BJ 城市
Organization Name (eg, company)ZMY 组织或者是个人
Organizational Unit Name (eg, section) []:XMKJ 机构名称
Common Name (eg, fully qualified host name) []:localhost 域名
Email Address []: 邮箱地址
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: 密码加盐 XMZSXMZSXMZS
生成数字证书
1 | openssl x509 -req -in certificate.csr -signkey private-key.pem -out certificate.pem |
x509: 表示使用 X.509 证书管理器功能模块。
-req: 表示从输入文件(这里为 “certificate.csr”)中读取证书签名请求数据。
-in certificate.csr: 指定要读取的证书签名请求文件名。
-signkey private-key.pem: 指定使用指定的私钥文件 “private-key.pem” 来进行签名操作。一般情况下,签名证书的私钥应该是和之前生成 CSR 的私钥对应的。
-out certificate.pem: 表示将签名后的证书输出到文件 “certificate.pem” 中。该文件中包含了签名后的证书信息,包括签名算法、有效期、公钥、授权主体的身份信息等。
Enter pass phrase for private-key.pem: 密码短语


