1. 程式人生 > >CentOS 7.4 Tengine安裝配置詳解(五)

CentOS 7.4 Tengine安裝配置詳解(五)

tengine nginx https

十四、配置Tengine支持HTTPS

1、演示環境:

IP

操作系統

角色

192.168.1.222

CentOS 7.4

Tengine服務器

192.168.1.145

CentOS 6.9

自建CA服務器

備註:TengineCA可以部署於同一臺服務器


2、修改配置文件nginx.conf,創建基於主機名的虛擬主機:

server {

listen 80;

server_name web.vhosts.com;

location / {

root /vhosts/web;

index index.html index.html;

}

}


3、創建虛擬主機頁面存放目錄及測試頁:

# mkdir -pv /vhosts/web

# echo "Index html" > /vhosts/web/index.html

# echo "Test html" > /vhosts/web/test.html

# nginx -t

# nginx -s reload


4、以管理員權限運行notepad,修改本地Windows 10C:\Windows\System32\drivers\etc\hosts文件,末尾新增代碼:192.168.1.222 web.vhosts.com,保存後訪問測試頁

技術分享圖片

技術分享圖片


5、 192.168.1.145的自建CA服務器創建私有CA

(1)安裝相關軟件包:# yum -y install openssl openssh-clients # which openssl --> /usr/bin/openssl

備註:OpenSSL的配置文件是/etc/pki/tls/openssl.cnf,此處無需修改,使用默認配置即可

(2)創建保存證書信息的數據庫文件:# touch /etc/pki/CA/index.txt

(3)創建保存證書序列號的文件:# echo 01 > /etc/pki/CA/serial

(4)生成私鑰cakey.pem# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

技術分享圖片

備註:genrsa子命令常用選項

? genrsa:用於生成RSA密鑰對的OpenSSL子命令

? -out cakey.pem:私鑰保存位置

? 2048:密鑰長度,也可以使用10244096

更多genrsa子命令選項可查看:# man genrsa

(5)生成CA證書cacert.pem

# cd /etc/pki/CA # openssl req -new -x509 -key private/cakey.pem -days 7300 -out cacert.pem

技術分享圖片

其中ca.vhosts.com為證書頒發者

備註:req子命令常用選項

? req:用於證書簽署請求和證書生成的OpenSSL子命令

? -new:生成新證書簽署請求

? -x509:專用於CA生成自簽證書

? -key cakey.pem:生成CA證書請求時用到的私鑰

? -days 7300:證書的有效期限為20

? -out cacert.pem:證書的保存路徑

更多req子命令選項可查看:# man req


6、 192.168.1.222Tengine服務器生成證書簽署請求文件並發送至自建CA服務器:

(1)安裝相關軟件包:# yum -y install openssh-clients # which openssl --> /usr/bin/openssl

(2)創建用於存放密鑰的目錄:# mkdir -pv /usr/local/tengine/ssl # cd /usr/local/tengine/ssl

(3)生成私鑰web-vhosts-com.key# (umask 077; openssl genrsa -out web-vhosts-com.key 2048)

技術分享圖片

(4)生成證書簽署請求文件web-vhosts-com.csr

# openssl req -new -key web-vhosts-com.key -days 7300 -out web-vhosts-com.csr

技術分享圖片

其中web.vhosts.com為證書頒發的對象

(5)將證書簽署請求文件web-vhosts-com.csr發送至192.168.1.145的自建CA服務器:

# scp web-vhosts-com.csr [email protected]:/etc/pki/CA/certs/


7、自建CA服務器簽署證書並發還給Tengine服務器:

(1)簽署證書:

# cd /etc/pki/CA/certs # openssl ca -in web-vhosts-com.csr -days 7300 -out web-vhosts-com.crt

技術分享圖片

備註:ca子命令常用選項

? ca:用於簽署證書請求的OpenSSL子命令

? -in web-vhosts-com.csr:證書簽署請求文件路徑

? -days 7300:證書的有效期限為20

? -out web-vhosts-com.crt:證書的保存路徑

更多ca子命令選項可查看:# man ca

(2)將證書web-vhosts-com.crt發還給Tengine服務器:

# scp web-vhosts-com.crt [email protected]:/usr/local/tengine/ssl

(3)Tengine服務器查看證書信息:

技術分享圖片

# openssl x509 -in web-vhosts-com.crt -noout -text //顯示詳細信息

# openssl x509 -in web-vhosts-com.crt -noout -subject

# openssl x509 -in web-vhosts-com.crt -noout -serial

技術分享圖片


8、配置Tengine支持HTTPS

(1)修改配置文件nginx.conf

server {

# HTTP默認監聽端口為80,而HTTPS默認監聽端口為443

listen 443 ssl;

server_name web.vhosts.com;

# 指定證書文件路徑

ssl_certificate /usr/local/tengine/ssl/web-vhosts-com.crt;

# 指定證書文件對應的私鑰文件路徑

ssl_certificate_key /usr/local/tengine/ssl/web-vhosts-com.key;

# 指定SSL/TLS會話緩存的類型和大小,shared:SSL:10m表示所有Tengine工作進程共享SSL會話緩存

ssl_session_cache shared:SSL:10m;

# SSL會話超時時長,默認為5分鐘

ssl_session_timeout 30m;

# 指定加密協議

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

# 指定使用的套件加密算法,不同的瀏覽器所支持的套件可能會有所不同

ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4;

# 設置協商加密算法時,優先使用服務器端的加密套件,而不是客戶端瀏覽器的加密套件

ssl_prefer_server_ciphers on;

location / {

root /vhosts/web;

index index.html index.html;

}

}

# nginx -t # nginx -s reload # ss -tunlp | grep :443

(2)瀏覽器中輸入https://web.vhosts.com測試:

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

(3)將所有HTTP請求(80端口)重定向到HTTPS443端口),並訪問測試頁:

server {

listen 80;

server_name web.vhosts.com;

# 以下方法三選一

rewrite ^/(.*)$ https://$server_name/$1 permanent;

#rewrite ^ https://$server_name$request_uri? permanent;

#return 301 https://$server_name$request_uri;

location / {

root /vhosts/web;

index index.html index.html;

}

}

# nginx -t # nginx -s reload

瀏覽器訪問http://web.vhosts.com,回車後自動跳轉至https://web.vhosts.com

技術分享圖片

瀏覽器訪問http://web.vhosts.com/test.html,回車後自動跳轉至https://web.vhosts.com/test.html

技術分享圖片

查看web-vhosts-com.crt證書信息:

技術分享圖片

備註:生產環境中使用的證書建議從正規的證書頒發機構處申請


CentOS 7.4 Tengine安裝配置詳解(五)