nginx 之 https 證書配置

HTTPS原理和做用

爲何須要HTTPShtml

緣由:HTTP不安全node

  • 傳輸數據被中間人盜用、信息泄露
  • 數據內容劫持、篡改

HTTPS協議的實現nginx

對傳輸內容進行加密以及身份驗證算法

對稱加密:加密祕鑰和解密祕鑰是對等的,同樣的shell

 

 

非對稱加密:緩存

 

HTTPS加密協議原理:安全

 

 

中間人僞造客戶端和服務端:(中間人能夠假裝成客戶端和服務端,中間人能夠對數據進行劫持,不安全服務器

 

 

HTTPS的CA簽名證書:(服務端和客戶端經過實現約定好的證書進行認證,都會對證書進行校驗,因此中間人無法劫持數據,故安全session

 

 

HTTPS 配置使用

證書籤名生成CA證書app

先確認環境:已經安裝openssl和nginx已經編譯ssl的模塊

openssl version

 

nginx -V

 

rpm -qa | grep open

  

生成祕鑰和CA證書步驟:

步驟一、生成key祕鑰

步驟二、生成證書籤名請求文件(csr文件)

步驟三、生成證書籤名文件(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服務

配置蘋果要求的證書:  

  • 一、服務器全部的鏈接使用TLS1.2以上的版本(openssl 1.0.2)
  • 二、HTTPS證書必須使用SHA256以上哈希算法簽名
  • 三、HTTPS證書必須使用RSA2048位或ECC256位以上公鑰算法
  • 四、使用前向加密技術

首先看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;
   }
}
相關文章
相關標籤/搜索