基於nginx結合openssl實現https


實驗環境:

系統版本: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

Centos7 配置Nginx實現HTTPS

重啟 reboot

安裝nginx服務

升級nginx為https條件

1、查看nginx是否支持ssl

/usr/local/nginx/sbin/nginx -V
Centos7 配置Nginx實現HTTPS
注:查看 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
Centos7 配置Nginx實現HTTPS 
注:以上截圖默認就是這樣的重要參數配置路徑,如果你要配置修改路徑,那么切記在后邊簽證書等等的操作都要按照這個配置路徑去創建,不然當認證的時候會找不到證書!

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
Centos7 配置Nginx實現HTTPS 
注:進入到/etc/pki/CA/目錄下執行這兩條命令!

2) 生成CA自簽名證書

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
Centos7 配置Nginx實現HTTPS 
注釋:
-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
Centos7 配置Nginx實現HTTPS

3) 生成CA證書申請文件

openssl req -new -key service.key -out service.csr
Centos7 配置Nginx實現HTTPS 
注:同樣提示輸入國家、省、市、公司等信息。切記:國家,省,公司名稱三項必須和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
Centos7 配置Nginx實現HTTPS

錯誤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
Centos7 配置Nginx實現HTTPS
Centos7 配置Nginx實現HTTPS

//查看頒發證書的序列號

cat /etc/pki/CA/serial 
Centos7 配置Nginx實現HTTPS

//查看指定編號的證書狀態

openssl ca -status 1
Centos7 配置Nginx實現HTTPS 
注:這個編號是頒發的第幾個證書,當前就一個所以是1!

//查看證書詳細信息

cat /etc/pki/CA/index.txt
Centos7 配置Nginx實現HTTPS 
注:開頭V表示當前證書的狀態正常!

//查看subjects信息
Centos7 配置Nginx實現HTTPS 
注:yes表示subjects信息必須是唯一的,不能重復申請!

6、修改nginx配置文件

vi /usr/local/nginx/conf/nginx.conf
Centos7 配置Nginx實現HTTPS
注:這里有一個坑就是默認的HTTPS SERVER這行必須刪除,要不然一直報錯!

7、重啟nginx服務

/etc/init.d/nginx restart

8、測試(建議使用Firefox瀏覽器測試)

訪問網頁測試

1)域名訪問地址:https://nginx.wangfeiyu.com/

Centos7 配置Nginx實現HTTPS
注:以上截圖訪問方式使用的是https加密訪問但是需要我們將證書導入瀏覽器才行!

導入方式:

//點擊高級
Centos7 配置Nginx實現HTTPS

//點擊添加列外
Centos7 配置Nginx實現HTTPS

//點擊確認安全列外
Centos7 配置Nginx實現HTTPS
Centos7 配置Nginx實現HTTPS
注:以上截圖已經可以訪問到網頁,說明nginx加密成功或者證書導入成功!其他的瀏覽器導入證書方式不一樣,但是超級簡單,自行百度即可!

2)IP訪問地址:http://192.168.152.177/

Centos7 配置Nginx實現HTTPS
注:這種方式默認使用的還是http協議!也可以設置為通過http跳轉到https!

3)IP地址https訪問:https://192.168.152.177/

Centos7 配置Nginx實現HTTPS 
注:以上截圖訪問方式使用的是https加密訪問但是需要我們將證書導入瀏覽器才行!導入方式以上面方式相同。


免責聲明!

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



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