https原理和使用Certbot配置https數字證書

數字證書html

  服務端發送本身的公鑰給CA(認證中心),CA先生成公鑰的摘要,而後用本身的私鑰對服務端的摘要進行加密,生成簽名,以後將簽名和服務端公鑰做爲數字證書發給服務端。python

  當服務端將數字證書發給客戶端時,客戶端用CA的公鑰解密後獲得服務端的公鑰的摘要。nginx

  以後客戶端生成公鑰的摘要,並與解密的摘要對比,就能夠判斷公鑰信息的正確性。api

HTTPS通訊過程ui

  非對稱加密是用來加密密鑰,對稱加密用來加密數據。加密

  首先客戶端請求服務端的443端口。url

  服務端有一對密鑰,公鑰和私鑰,用作非對稱加密的密鑰。爲了保證公鑰不被篡改,要從CA獲取數字證書。服務端將數字證書發給客戶端。spa

  客戶端對數字證書進行檢查使用CA公鑰進行校驗。code

  若是合法,客戶端會生成一個隨機字符串,用作對稱加密的密鑰。並用服務端的公鑰對該密鑰進行加密。server

  客戶端發起第二次請求,將加密後的密鑰發給服務端。

  服務端用私鑰解密後,就獲得了客戶端的密鑰。

  服務端用該密鑰加密數據後發送給客戶端。

  客戶端用該密鑰解密數據,結束一次通訊過程。

Certbot配置https數字證書

yum -y install yum-utils
yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
yum install certbot python2-certbot-nginx
pip install urllib3
certbot --nginx

錯誤:ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.

pip install --upgrade --force-reinstall 'requests==2.6.0'

nginx配置

server {
        listen       443 ssl;
        server_name  rov-lab.top www.rov-lab.top;

        ssl_certificate    /etc/letsencrypt/live/rov-lab.top/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/rov-lab.top/privkey.pem;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location /api {
            proxy_pass http://127.0.0.1:8080/api;
        }

        location / {
            root   /root/html/;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
    }server {
    listen 80;
    server_name rov-lab.top www.rov-lab.top;
    rewrite ^(.*)$  https://$server_name$1 permanent;
}
相關文章
相關標籤/搜索