一.生成自簽證書 若是有購買證書的,可忽略此步驟。前端
生成方法一:web
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
生成方法二:數據庫
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生成一個證書websocket
openssl req -new -key server.key -out server.csr
5.用CA的證書爲生成的server.csr文件簽名session
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
6.證書撤銷 不須要吊銷證書的,可沒必要執行此步驟。app
openssl ca -keyfile ca.key -cert ca.crt -revoke server.crt
這時數據庫被更新證書被標記上撤銷的標誌,須要生成新的證書撤銷列表:socket
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協議頭參數,以下:
location /wsapp/ { proxy_pass http://wsbackend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; }
若是不增長如上參數,反向代理時本來的websocket請求就當作http請求反饋給後端,致使沒法定位到具體資源。從而導致前端收到響應404.