Https环境搭建
作者:陆金龙
发表时间:2022-12-12 21:44
关键词:
1.Https相关原理
Https通讯过程:
- 某网站拥有用于非对称加密的公钥A、私钥A’。
- 浏览器向网站服务器请求,服务器把公钥A明文给传输浏览器。
- 浏览器随机生成一个用于对称加密的密钥X,用公钥A加密后传给服务器。
- 服务器拿到后用私钥A’解密得到密钥X。
- 这样双方就都拥有密钥X了,且别人无法知道它。之后双方所有数据都通过密钥X加密解密即可。
劫持过程:
- 某网站有用于非对称加密的公钥A、私钥A’。
- 浏览器向网站服务器请求,服务器把公钥A明文给传输浏览器。
- 中间人劫持到公钥A,保存下来,把数据包中的公钥A替换成自己伪造的公钥B(它当然也拥有公钥B对应的私钥B’)。
- 浏览器生成一个用于对称加密的密钥X,用公钥B(浏览器无法得知公钥被替换了)加密后传给服务器。
- 中间人劫持后用私钥B’解密得到密钥X,再用公钥A加密后传给服务器。
- 服务器拿到后用私钥A’解密得到密钥X。
使用证书:
参考:http://iprogram.com.cn/item/364.html
2.Https环境搭建
2.1 申请证书
可以在阿里云申请免费证书,得到证书压缩包。我为klfront.com申请的证书压缩包,包含后缀名为.key和.pem的两个文件。.key的文件是私钥,.pem的文件是证书,如下图所示:
2.2 安装nginx的ssl模块
参考:https://www.cnblogs.com/ambition26/p/14077773.html
进入到解压缩后的nginx目录(/root/nginx),输入:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
接下来执行
make
使用新生成的nginx文件替换掉之前安装目录sbin下的nginx
./nginx -s stop #停止nginx服务
cp /root/nginx/objs/nginx /usr/local/nginx/sbin
检查是否安装了ssl
/usr/local/nginx/sbin ./nginx -V
替换后执行 -V命令如果提示权限不足,先给这个nginx文件提升下权限:
2.3 nginx的配置
我的服务器配置:
在nginx目录下创建cer目录,将申请的证书的压缩包复制到cer目录下,重命名为cert.pem和cert.key。
编辑nginx.conf文件,443端口部分的配置如下:
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /usr/local/nginx/cer/cert.pem;
ssl_certificate_key /usr/local/nginx/cer/cert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
测试:浏览器输入 https://klfront.com/ 访问成功。