數字證書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; }