HTTPS协议

江枫思渺然 提交于 2020-03-21 11:44:15

HTTPS协议原理

  https协议是http协议的一种升级版,具有一定的安全性。在http协议和TCP协议之间有一层安全协议SSL或者STL。在通信之前通过SSL或者STL协议对数据进行加密,HTTPS协议既具有单向认证功能也具有双向认证功能。

SSL/TLS

SSL/TLS协议分为两层协议,一层是记录协议,一层是握手协议。

握手协议步骤如下:

1、客户端发送信息到服务端,信息包含如下内容:协议的版本信息、加密算法、压缩算法、产生的随机数等。

2、服务端在收到信息后,会向客户端发出响应信息,包含:协议的版本信息、加密算法、压缩算法、产生的随机数、数字证书等。

3、客户端在收到信息后对证书进行校验。

4、客户端验证证书合法性后,会对服务端发送经过服务端公钥加密后的预主秘钥,

5、服务端在收到预主秘钥后,通过私钥进行解密,并使用两端的随机数加上预主秘钥来生成主秘钥,然后通过主秘钥生成加密秘钥。

6、客户端也会通过预主秘钥、两端的随机数生成客户端的主秘钥,并通过主秘钥生成加密秘钥。

7、客户端通知服务端未来信息使用加密秘钥加密信息。

8、服务端通知客户端未来信息使用的加密秘钥加密信息。

HTTPS协议实现

HTTPS协议的实现主要分为两步:创建证书和配置nginx。

一、创建证书

配置一个HTTPS服务所需要的证书包括几个部分:

  • Server Key(服务器私钥)
  • CSR(Certificate Signing Request)
  • CRT(X509 Certificate)

创建证书的基本流程是这样:

  • 生成自己的服务端私钥
  • 输入基本信息并用私钥签名生成CSR
  • 提交CSR给证书机构CA(免费或商业证书)签名生成CRT,或自己做CA签名生成CRT(自签名证书)

创建证书的步骤如下:

1、生成服务器私钥:

openssl genrsa 1024 > server.key

说明:这是用128位rsa算法生成密钥,得到server.key文件

2、生成CSR:

openssl req -new -keyserver.key-outcertreq.csr

说明:这是用步骤1的密钥生成证书请求文件server.csr, 这一步提很多问题,一一输入

3、生成证书:

openssl req -x509 -days 365 -key server.key -in server.csr > server.crt

说明:这是用步骤1,2的的密钥和证书请求生成证书server.crt,-days参数指明证书有效期,单位为天。

二、在nginx中配置

1、修改nginx配置文件

server {
        listen       443;
        server_name  selfssl.hxkj.vip;  //此处填写你自己的域名
        ssl on;
        root         /usr/share/nginx/html;

        ssl_certificate "/home/ssl/ssl.crt";   //此处填写刚刚生成的ssl.crt文件路径
        ssl_certificate_key "/home/ssl/ssl.key";    //此处填写刚刚生成的ssl.key文件路径
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_protocols SSLv2 SSLv3 TLSv1;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_prefer_server_ciphers on;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

2、进行热加载

  nginx -s reload

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!