一.生成自簽證書
如果有購買證書的,可忽略此步驟。
生成方法一:
openssl genrsa -des3 -out ca.key 1024
openssl rsa -in ca.key -out ca.key.nopass
openssl req -new -key ca.key.nopass -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey ca.key.nopass -out server.crt
生成方法二:
- 建立CA密鑰
創(chuàng)建密鑰
openssl genrsa -des3 -out ca.key 1024
2.利用CA密鑰自簽署CA證書
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
3.生成(eg服務器端的)私鑰(key文件)
openssl genrsa -des3 -out server.key 1024
4.用server.key生成一個證書
openssl req -new -key server.key -out server.csr
5.用CA的證書為生成的server.csr文件簽名
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
6.證書撤銷
不需要吊銷證書的拍屑,可不必執(zhí)行此步驟。
openssl ca -keyfile ca.key -cert ca.crt -revoke server.crt
這時數(shù)據(jù)庫被更新證書被標記上撤銷的標志坑傅,需要生成新的證書撤銷列表:
openssl ca -gencrl -keyfile ca.key -cert ca.crt -out test.crl
查看證書撤銷列表:
openssl crl -noout -text -in crl/test.crl
二.配置HTTPS
/mnt/cert/xxx 為證書 存放路徑僵驰,自行更正。
listen 80;
listen 443 ssl;
ssl_certificate /mnt/cert/xxx/server.crt;#你的證書位置
ssl_certificate_key /mnt/cert/xxx/ca.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
三.強制http跳轉https
強制http請求跳轉到https上唁毒,可以配置兩個server蒜茴,然后進行301跳轉。這里通過判斷域名的方式枉证,更直接簡單矮男。
if ($scheme = 'http') {
return 301 https://$host$request_uri;
}
四.配置wss(websocket)
給websocket長連接請求增加上tls保護,使其原本的ws變成wss室谚。
這里和http請求配置tls基本一致毡鉴,需要在其基礎上增加http協(xié)議頭參數(shù)崔泵,如下:
location /wsapp/ {
proxy_pass http://wsbackend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
如果不增加如上參數(shù),反向代理時原本的websocket請求就當做http請求反饋給后端猪瞬,導致無法定位到具體資源憎瘸。從而致使前端收到響應404.