nginx 之 https 證書配置


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;
   }
}

  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM