SSL TLS HTTPS
HTTPS = http + TLS/SSL
HTTPS,全称为 Hypertext Transfer Protocol Secure,是一种通过加密通道传输数据的安全协议。它是 HTTP 协议的安全版本,用于在 Web 浏览器和 Web 服务器之间进行安全的数据传输。HTTPS 在传输过程中使用了 SSL(Secure Sockets Layer)或 TLS(Transport Layer Security)协议来加密数据,确保敏感信息在传输过程中不会被窃取或篡改。
注意:https 默认监听端口 443 http 默认监听端口 80
http 缺点
- 信息不加密:通信使用明文(不加密),内容可能会被盗用
- 无身份校验:不验证通信方的身份,因此有可能遭遇伪装
- 无完整性验证:无法证明报文的完整性,所以有可能已遭篡改
https 优点
信息加密
身份验证
完整性校验
TLS SSL
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 升级版。二者工作原理类似,但 TLS 提高了安全性,并解决了 SSL 存在的一些安全性问题和性能问题。
在 TCP/IP 四层模型中,TLS SSL 在哪一层加密?
在应用层下、在传输层上,可以理解为“安全层”
加密算法
对称加密 共有密钥
常见的算法有 AES DES 加密
举例 麒麟
->星月
发消息 但是他们的消息不想被别人知道,采用了对称加密,于是他们两个协商了一段密钥,今生永相随
麒麟:AES算法 + 密钥(今生永相随)+明文(吃面) = XMZSXMZS==
星月:使用AES + 密钥(今生永相随)+密文( XMZSXMZS==) = 吃面
非对称加密 一人分别一个公私钥
常见算法有 RSA DSA 加密
举例 麒麟
->星月
发消息,这次使用的是非对称加密,生成了公钥和私钥,公钥可以对外公开,私钥必须只能麒麟
知道不能泄露。
星月:RSA + 公钥 + 明文(吃面) = XMZS==
麒麟:RSA + 私钥 + 密文(XMZS==) = 吃面
散列函数
TLS 融合了对称加密、非对称加密以及散列函数实现加密,保证安全性
TLS 证书
在 SSL/TLS 加密通信中,一般需要使用三个文件来完成证书相关操作,即:
- 私钥文件(例如 “private-key.pem”),用于对加密数据进行解密操作。
- 证书签名请求文件(例如 “certificate.csr”),用于向 CA 申请 SSL/TLS 证书签名。
- SSL/TLS 证书文件(例如 “certificate.pem”),用于对客户端发送的请求进行验证,以确保通信安全可靠。
私钥文件用于对数据进行解密操作,保证了通信的机密性;证书签名请求文件包含了请求者的身份信息和公钥等信息,需要被发送给 CA 进行签名,从而获取有效的 SSL/TLS 证书;SSL/TLS 证书文件则包含了签名后的证书信息,被用于客户端和服务器之间的身份验证,以确保通信的安全性和可靠性。
通过使用这三个文件进行密钥交换和身份验证,SSL/TLS 可以实现加密通信以及抵御可能的中间人攻击,提高了通信的安全性和保密性。
openssl 生成加密证书
生成 private-key.pem 文件
1 |
|
openssl: OpenSSL 命令行工具的名称。
genpkey: 生成私钥的命令。
-algorithm RSA: 指定生成 RSA 私钥。
-out private-key.pem: 将生成的私钥保存为 private-key.pem 文件。
-aes256: 为私钥添加 AES 256 位加密,以保护私钥文件不被未经授权的人访问。
Enter PEM pass phrase 密码短语生成 pem 文件的时候需要 123123
生成 certificate.csr 文件
1 |
|
- “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 []: 密码加严 mmymmy
生成 certificate.pem 文件
1 |
|
“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: 密码短语
nodejs 接口测试 https
1 |
|