一、前言
1.1、SSL
SSL(Secure Sockets Layer,安全套接字层)是一种加密协议,用于在计算机网络上保护数据的传输。SSL的主要作用是通过加密通信内容来确保数据在传输过程中的机密性、完整性和身份验证。它通常用于网页浏览器与服务器之间的安全通信(即HTTPS协议),确保用户与网站之间的信息交换不会被第三方窃取或篡改。
为什么需要SSL:
-
数据加密:SSL通过加密传输的数据,确保黑客无法窃取或读取通信内容。这对敏感信息,如个人资料、支付信息等至关重要。
-
身份验证:SSL协议通过证书验证服务器的身份,确保用户连接的是正确的网站,而不是冒充的钓鱼网站。这样可以防止用户遭遇中间人攻击(MITM)或其他类型的欺诈行为。
-
数据完整性:SSL还确保数据在传输过程中不会被篡改或损坏。如果数据被篡改,接收方会发现并终止连接。
-
提高信任度:启用SSL的网页会显示绿色的锁标志或“https://”前缀,给用户提供更多信任,尤其是在进行网上购物、支付等敏感操作时。
1.2、TLS
TLS(Transport Layer Security,传输层安全协议)是SSL(Secure Sockets Layer,安全套接字层)的继任者。TLS和SSL都用于加密计算机网络中的数据传输,确保数据的机密性、完整性和身份验证。
尽管SSL和TLS在功能上有很大相似性,但在现代网络中,TLS被认为是更安全的标准。事实上,许多“SSL”证书实际上支持TLS协议,所以我们通常听到的“SSL”实质上是指TLS。
1.3、CA
CA(Certificate Authority)指证书颁发机构,它通过标识域名,负责签发和管理数字证书,以确保网络通信的安全性。例如,访问 *https://www.example.com/ *时,浏览器会检查服务器提供的 SSL/TLS 证书是否匹配 example.com,从而防止中间人攻击(MITM)。
二、开发环境(windows)
在Windows上使用 OpenSSL 生成 pfx 证书即可,具体操作步骤如下。
2.1、安装OpenSSL
在在命令行中通过下面命令判断是否安装OpenSSL服务,没安装的,自己安装一下。
# 判断OpenSSL是否安装
openssl version
- 1
- 2
2.2、生成私钥
下面 localhost.key 是文件名称,lgenrsa 是指定密钥对为 RSA 算法, 2048 指的是密钥长度。
# 生成私钥
openssl genrsa -out localhost.key 2048
- 1
- 2
2.3、生成证书请求
下面 localhost.csr 是文件名称,localhost.key 是私钥文件,localhost 是域名(一定要和开发环境域名一样)。
# 生成证书请求
openssl req -new -key localhost.key -out localhost.csr -subj "/CN=localhost"
- 1
- 2
2.4、生成自签名证书
下面,-days 365 是证书授权时间, localhost.csr 是请求文件名称, localhost.key 是请私钥名称,localhost.crt 是要生成的证书名称。
# 生成自签名证书
openssl x509 -req -days 365 -in localhost.csr -signkey localhost.key -out localhost.crt
- 1
- 2
2.5、生成pfx证书
windows中pfx格式的证书能直接安装,另外asp.net core web api中通常需要pfx格式的证书。
下面,YourPassword 是pfx证书文件的加密密码。
openssl pkcs12 -export -out localhost.pfx -inkey localhost.key -in localhost.crt -password pass:YourPassword
- 1
2.6、应用效果
在浏览器中我们发现已经存在ssl证书了,因为CA验证未通过,会提示不安全。如果想绕开CA验证,想要信任当前证书,需要在浏览器中导入刚刚生成的pfx证书。配置链接如下。
Chrome官方配置: 本地证书导入
三、生产环境
生产环境中,因为CA的标识规则就是用的域名,所以生成SSL证书需要域名并授权。SSL 证书有免费的,也有收费的, 区别体现在认证级别、附加服务、有效期等方面。对于个人测试开发、网站搭建,免费的 SSL 证书就够了。
SSL 代理机构很多, 比如 Let’s Encrypt、ZeroSSL 等,国内的是 FreeSSL。生成 SSL 证书通常使用ACME协议,也因此常用到acme工具。
3.1、Windows系统
3.1.1、下载win-acme工具
进入winacme官网,并点击上方的下载按钮,下载之后解压缩。
WinACME官网: https://www.win-acme.com/
3.1.1、使用win-acme
选择全全参数创建方式。
如何确定证书中要包含的域?选择手动配置。
输入域名。
生成为单个文件。
如何证明你是域名拥有者?在域名中手动创建解析方式。
RSA加密方式。
证书保存格式-crt。
是否设置密码。
证书其他保存格式-pfx。
额外配置?
给出需要手动添加的解析信息。
域名中手动添加解析,添加完成后,在命令行中回车。
回车。
回车。
是否要指定任务将以何种用户身份运行?否。
生成证书。
3.2、Linux系统
我这里选择现在freessl官网中申请好证书,然后在linux中通过命令创建证书,具体步骤如下。
3.2.1、登陆FreeSSL
登陆 freessl官网,注册账号,登陆,选择证书类型。
FreeSSL官网: https://www.csdn.net/
3.2.2、证书自动化
3.2.2.1域名授权
点击添加域名,填写域名,然后点击下一步。
填写域名,然后根据得到的配置信息,到云商域名解析服务中,添加域名解析。
添加解析。
点击配置完成,立即检测。
3.2.2.2申请证书
点击申请证书。
选择刚刚申请的域名。
设置参数。
到这一步,freessl中给出了安装acme和创建证书的命令,此时只需要在Linux中执行命令,即可创建证书。
评论记录:
回复评论: