實驗環境:
系統版本:centos7x3.10.0-514.el7.x86_64
Nginx版本:nginx1.14.0
關閉防火牆並禁止開機自啟
systemctl stop firewalld.service
systemctl disable firewalld
關閉selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
修改主機名
vi /etc/hostname
nginx.wangfeiyu.com
域名綁定IP
vi /etc/hosts
重啟 reboot
安裝nginx服務
升級nginx為https條件
1、查看nginx是否支持ssl
/usr/local/nginx/sbin/nginx -V
注:查看 configure arguments 信息中是否包含 -with-http_ssl_module 字樣,如果沒有則需要重新編譯。找到之前安裝 Nginx 時的編譯目錄,配置ssl模塊,因為這次是升級nginx,所以不需要執行 make install,執行命令如下:
. /configure --with-http_ssl_module
make
2、查看openssl配置文件
vi /etc/pki/tls/openssl.cnf
注:以上截圖默認就是這樣的重要參數配置路徑,如果你要配置修改路徑,那么切記在后邊簽證書等等的操作都要按照這個配置路徑去創建,不然當認證的時候會找不到證書!
3、創建生成證書需要的文件
1)創建證書索引數據庫文件
touch /etc/pki/CA/index.txt
2) 指定第一個頒發證書的序列號
echo 01 > /etc/pki/CA/serial
注:必須是兩位十六進制數,99之后是9A!
4、CA自簽證書
1)生成CA私鑰
cd /etc/pki/CA
umask 066
openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048
注:進入到/etc/pki/CA/目錄下執行這兩條命令!
2) 生成CA自簽名證書
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
注釋:
-new: 生成新證書簽署請求
-x509: 專用於 CA 生成自簽證書
-key: 生成請求時用到的私鑰文件
-days n:證書的有效期限
-out: 證書的保存路徑
提示輸入國家,省,市,公司名稱,部門名稱,CA主機名(頒發者名稱)
4)查看生成的自簽名證書
//linux系統下查看
openssl x509 -in /etc/pki/CA/cacert.pem -noout -text
//windows系統下查看
需要更改上述文件名后綴為.cer即可查看
5、頒發證書
1)在當前創建/root/key/目錄
mkdir key
2)生成web服務器私鑰
cd key/
umask 066
openssl genrsa -out key/service.key 2048
3) 生成CA證書申請文件
openssl req -new -key service.key -out service.csr
注:同樣提示輸入國家、省、市、公司等信息。切記:國家,省,公司名稱三項必須和CA一致。主機名稱必須和網站域名相同,如www.centos73.com。或者使用泛域名,即*.centos73.com,匹配所有。
4) 將證書文件移動到CA服務器/etc/pki/CA/crl/目錄下
mv service.csr /etc/pki/CA/crl/
5) CA簽署證書,並將證書頒發給請求者
openssl ca -in /etc/pki/CA/crl/service.csr -out /etc/pki/CA/certs/service.crt -days 365
錯誤1:
wrong number of fields on line 1 (looking for field 6, got 1, '' left)
原因是你的index.txt文件不為空,改為空文件即可。
錯誤2:
error while loading serial number
3078239980:error:0D066096:asn1 encoding routines:a2i_ASN1_INTEGER:short line:f_int.c:215:
原因:是因為serial文件中沒有賦初值,即沒有執行echo 01 > /etc/pki/CA/serial
6)查看證書中的信息
//查看自簽證書
openssl x509 -in 絕對路徑 -noout –text | issuer | subject | serial | dates
//查看頒發證書的序列號
cat /etc/pki/CA/serial
//查看指定編號的證書狀態
openssl ca -status 1
注:這個編號是頒發的第幾個證書,當前就一個所以是1!
//查看證書詳細信息
cat /etc/pki/CA/index.txt
注:開頭V表示當前證書的狀態正常!
//查看subjects信息
注:yes表示subjects信息必須是唯一的,不能重復申請!
6、修改nginx配置文件
vi /usr/local/nginx/conf/nginx.conf
注:這里有一個坑就是默認的HTTPS SERVER這行必須刪除,要不然一直報錯!
7、重啟nginx服務
/etc/init.d/nginx restart
8、測試(建議使用Firefox瀏覽器測試)
訪問網頁測試
1)域名訪問地址:https://nginx.wangfeiyu.com/
注:以上截圖訪問方式使用的是https加密訪問但是需要我們將證書導入瀏覽器才行!
導入方式:
//點擊高級
//點擊添加列外
//點擊確認安全列外
注:以上截圖已經可以訪問到網頁,說明nginx加密成功或者證書導入成功!其他的瀏覽器導入證書方式不一樣,但是超級簡單,自行百度即可!
2)IP訪問地址:http://192.168.152.177/
注:這種方式默認使用的還是http協議!也可以設置為通過http跳轉到https!
3)IP地址https訪問:https://192.168.152.177/
注:以上截圖訪問方式使用的是https加密訪問但是需要我們將證書導入瀏覽器才行!導入方式以上面方式相同。