HTTPS原理和作用
為什么需要HTTPS
原因:HTTP不安全
- 傳輸數據被中間人盜用、信息泄露
- 數據內容劫持、篡改
HTTPS協議的實現
對傳輸內容進行加密以及身份驗證
對稱加密:加密秘鑰和解密秘鑰是對等的,一樣的
非對稱加密:
HTTPS加密協議原理:
中間人偽造客戶端和服務端:(中間人可以偽裝成客戶端和服務端,中間人可以對數據進行劫持,不安全)
HTTPS的CA簽名證書:(服務端和客戶端通過實現約定好的證書進行認證,都會對證書進行校驗,所以中間人沒法劫持數據,故安全)
HTTPS 配置使用
證書簽名生成CA證書
先確認環境:已經安裝openssl和nginx已經編譯ssl的模塊
openssl version
nginx -V
rpm -qa | grep open
生成秘鑰和CA證書步驟:
步驟1、生成key秘鑰
步驟2、生成證書簽名請求文件(csr文件)
步驟3、生成證書簽名文件(CA文件)
證書簽名生成和Nginx的HTTPS服務場景演示
先創建一個用來放秘鑰的文件夾 ssl_key
cd /etc/nginx/ mkdir ssl_key
輸入加密算法
openssl genrsa -idea -out jesonc.key 1024
回車,會讓輸入密碼,這里設置為123456,完成后會生成一個.key的文件
生成證書簽名請求文件(csr文件)
openssl req -new -key jesonc.key -out jesonc.csr
查看生成的請求文件
生成證書簽名文件(CA文件) 打包 有效期設置了 10 年
openssl x509 -req -days 3650 -in jesonc.csr -signkey jesonc.key -out jesonc.crt
Nginx的HTTPS語法配置
ssl開關 配置語法:ssl on|off; 默認狀態:ssl off; 配置方法:http、server ssl證書文件 配置語法:ssl_certificate file; 默認狀態:- 配置方法:http、server ssl密碼文件 配置語法:ssl_certificate_key file; 默認狀態:ssl off; 配置方法:http、server
進入/etc/nginx/conf.d/
test_https.conf
server { listen 443;# https 監聽的是 443端口 server_name 192.168.1.112 www.zhangbiao.com; keepalive_timeout 100; ssl on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_certificate /etc/nginx/ssl_key/jesonc.crt; # 證書路徑 ssl_certificate_key /etc/nginx/ssl_key/jesonc.key; # 請求認證 key 的路徑 index index.html index.htm; location / { root /opt/app/code; } }
配置好之后,關閉和啟動,都需要數之前設置的密碼
關閉
nginx -s stop -c /etc/nginx/nginx.conf
啟動
nginx -c /etc/nginx/nginx.conf
訪問
https://www.zhangbiao.com/index.html
基於Nginx的HTTPS服務_實戰場景配置蘋果要求的openssl后台HTTPS服務
配置蘋果要求的證書:
- 1、服務器所有的連接使用TLS1.2以上的版本(openssl 1.0.2)
- 2、HTTPS證書必須使用SHA256以上哈希算法簽名
- 3、HTTPS證書必須使用RSA2048位或ECC256位以上公鑰算法
- 4、使用前向加密技術
首先看openssl版本:,為1.0.1,需要升級
查看當前使用的自簽算法類型:openssl x509 -noout -text -in ./jesonc.crt,使用的是sha256,位數是1024位,都不符合規定
openssl x509 -noout -text -in ./jesonc.crt
升級openssl,使用shell腳本升級
update_openssl.sh
#!/bin/sh #jeson@imoocc.com cd /opt/download wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz tar -zxvf openssl-1.0.2k.tar.gz cd openssl-1.0.2k ./config --prefix=/usr/local/openssl make && make install mv /usr/bin/openssl /usr/bin/openssl.OFF mv /usr/include/openssl /usr/include/openssl.OFF ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl ln -s /usr/local/openssl/include/openssl /usr/include/openssl echo "/usr/local/openssl/lib" >>/etc/ld.so.conf ldconfig -v openssl version -a
執行腳本
sh ./update_openssl.sh
版本升級成功,查看版本
openssl version
制作復合蘋果的證書
修改算法
openssl req -days 36500 -x509 -sha256 -nodes -new^Cy rsa:2048 -keyout jesonc_apple.crt
修改配置文件
test_https.conf
server { listen 443; server_name 192.168.1.112 www.zhangbiao.com; keepalive_timeout 100; ssl on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_certificate /etc/nginx/ssl_key/jesonc_apple.crt; ssl_certificate_key /etc/nginx/ssl_key/jesonc.key; index index.html index.htm; location / { root /opt/app/code; } }
檢查配置語法,並重載
nginx -tc /etc/nginx/nginx.conf nginx -s reload -c /etc/nginx/nginx.conf
查看443端口是否啟動
netstat -luntp | grep 443
訪問
https://www.zhangbiao.com/index.html
成功返回地頁面
HTTPS 服務優化
方法一:
激活keepalive 長連接
方法二:
設置 session 緩存
test_https.conf
server { listen 443; server_name 116.62.103.228 jeson.t.imooc.io; keepalive_timeout 100; # 長連接 100s ssl on; ssl_session_cache shared:SSL:10m; # 設置 10M 的緩存 ssl_session_timeout 10m; # session 過期時間 10 分鍾 ssl_certificate /etc/nginx/ssl_key/jesonc_apple.crt; ssl_certificate_key /etc/nginx/ssl_key/jesonc.key; index index.html index.htm; location / { root /opt/app/code; } }