SSL申请
![](https://i-blog.csdnimg.cn/blog_migrate/a4a0e53c67839077fde4f76206af98e6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/167e41e6d69dbedcd15f1df9c6a4b190.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9d10db5a3d5915903c17ce8ae6b9626a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ea6f26601df9215efd89fc9cc319.png)
![](https://i-blog.csdnimg.cn/blog_migrate/244587b42a7c9e6d9b4a0eb681d7e38f.png)
更新nginx配置
http{
#http节点中可以添加多个server节点
server{
#监听443端口
listen 443 ssl;
server_name 域名或者IP;
# ssl on; 新版nginx会提示warning信息,系统建议将ssl写到listen中
ssl_certificate /etc/ssl/server.crt; # 公钥文件存放路径
ssl_certificate_key /etc/ssl/server.key; # 私钥文件存放路径
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
#这是我的主页访问地址,因为使用的是静态的html网页,所以直接使用location就可以完成了。
location / {
#文件夹
root html;
#主页文件
index index.html;
}
}
server{
# 将80端口上的侦听到的所有请求,都重定向为https协议访问
listen 80;
# server_name baofeidyz.com;
# rewrite ^/(.*)$ https://$host/$1 permanent;
return 301 https://$host$request_uri;
}
}
注意:
配置SSL证书时,使用“ssl on”,在检查(./nginx -t)nginx配置文件时,系统会提示错误信息(warning警告级别的信息)
the directive is deprecated, use the "listen ... ssl",系统建议将ssl写在listen后面:listen 443 ssl;
另外https配置时不一定必须在443端口进行配置,也可以在其他端口进行配置,443端口只是https访问时默认的端口,举例:比如部署在云上的公网IP为120.66.222.111,程序的内网IP为192.168.1.1,配置时可以做端口映射120.66.222.111:443---->192.168.1.1:8888,这样可以在192.168.1.1上监听8888端口,SSL证书也放在这台服务器上(listen 8888 ssl;其他配置一并写上即可),这样当访问https://120.66.222.111直接会跳转到https://192.168.1.1:8888上,并在该台服务器上返回相应的证书;
# 外网存在一个映射外网IP:120.66.222.111的443端口会映射到192.168.1.1的8888端口,所以在192.168.1.1的服务器上配置也可以
http{
#http节点中可以添加多个server节点
server{
#监听443端口
listen 8888 ssl;
server_name 192.168.1.1;
# ssl on; 新版nginx会提示warning信息,系统建议将ssl写到listen中
ssl_certificate /etc/ssl/server.crt; # 公钥文件存放路径
ssl_certificate_key /etc/ssl/server.key; # 私钥文件存放路径
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
#这是我的主页访问地址,因为使用的是静态的html网页,所以直接使用location就可以完成了。
location / {
#文件夹
root html;
#主页文件
index index.html;
}
}
server{
# 将80端口上的侦听到的所有请求,都重定向为https协议访问
listen 80;
# server_name baofeidyz.com;
# rewrite ^/(.*)$ https://$host/$1 permanent;
return 301 https://$host$request_uri;
}
}
https协议的建立过程
HTTP是明文传输的,这就意味着介于发送端和接收端之间的任意节点都可以知道传输的内容是什么,这些节点可以是路由器、代理等。
因此,HTTPS出现了,其是以安全为目标的HTTP通道,全称是Hyper Text Transfer Protocal over Secure Socket Layer,即在HTTP之下加入了SSL(安全套套接层),用于安全的HTTP数据传输。
TLS(传输层安全)跟SSL(安全套接字)可以理解成类似的东西,可以将SSL理解成负责对HTTP的数据进行加密的加密套件,而TLS是SSL的升级版/继任者。
在通过对HTTPS的建立过程(SSL建立安全会话的过程),对客户端、服务器、CA三方在这个过程中的交互做了一个简单的图。因为涉及的东西较多,下面只对建立过程进行一个整体认识。
其实客户端生成随机数密码(对称密钥/协商密钥)依赖于随机数random_C、随机数random_S、随机数Pre-Master。
此外,服务器还有一个对对称密钥的验证过程。下图更为详细:
服务器和客户端的验证过程其实就是使用Hash算法计算握手信息,并使用对称密钥解密对方发过来的信息,对两者进行比较,如果一致则说明己方的对称密钥跟对方是一致的,即正确的。
(这里的握手信息指的是双方的通信信息/参数,是双方都存有的数据。)
一开始客户端和服务器协商的加密算法其实是一个加密套件,其中包括了认证算法 Au (身份验证)、密钥交换算法 KeyExchange(密钥协商)、对称加密算法 Enc (信息加密)和信息摘要 Mac(完整性校验)。
参考:
https://blog.csdn.net/wangjun5159/article/details/51510594
https://blog.csdn.net/u011779724/article/details/80776776