Https环境搭建

作者:陆金龙    发表时间:2022-12-12 21:44   

关键词:  

1.Https相关原理

Https通讯过程:

  1. 某网站拥有用于非对称加密的公钥A、私钥A’。
  2. 浏览器向网站服务器请求,服务器把公钥A明文给传输浏览器。
  3. 浏览器随机生成一个用于对称加密的密钥X,用公钥A加密后传给服务器。
  4. 服务器拿到后用私钥A’解密得到密钥X。
  5. 这样双方就都拥有密钥X了,且别人无法知道它。之后双方所有数据都通过密钥X加密解密即可。

劫持过程:

  1. 某网站有用于非对称加密的公钥A、私钥A’。
  2. 浏览器向网站服务器请求,服务器把公钥A明文给传输浏览器。
  3. 中间人劫持到公钥A,保存下来,把数据包中的公钥A替换成自己伪造的公钥B(它当然也拥有公钥B对应的私钥B’)
  4. 浏览器生成一个用于对称加密的密钥X,用公钥B(浏览器无法得知公钥被替换了)加密后传给服务器。
  5. 中间人劫持后用私钥B’解密得到密钥X,再用公钥A加密后传给服务器。
  6. 服务器拿到后用私钥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/ 访问成功。