CentOS 7.4 Tengine安裝配置詳解(五)
1、演示環境:
IP | 操作系統 | 角色 |
192.168.1.222 | CentOS 7.4 | Tengine服務器 |
192.168.1.145 | CentOS 6.9 | 自建CA服務器 |
備註:Tengine和CA可以部署於同一臺服務器
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 10的C:\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:密鑰長度,也可以使用1024或4096
更多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.222的Tengine服務器生成證書簽署請求文件並發送至自建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端口)重定向到HTTPS(443端口),並訪問測試頁:
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安裝配置詳解(五)