centos7上nginx1.14.0配置https
說在前面:
centos7上配置https之前需要先配置 ngx_http_ssl_module,否則即使在nginx.conf中配置了https,但在啟動nginx的時候會報錯:
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:118
如下:
[[email protected] sbin]# ./nginx nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:118 正式開始:
一 nginx 開啟SSL模組
1.1 nginx如果未開啟SSL模組,配置https時提示錯誤
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:118
原因也很簡單,nginx缺少http_ssl_module模組,編譯安裝的時候帶上 --with-http_ssl_module 配置就行了,但往往實際的情況是我們的nginx已經安裝過了,在這種情況要怎麼新增模組,其實很簡單,往下看:做個說明:我的nginx安裝目錄是/usr/local/nginx這個目錄,我的原始碼包在/usr/local/nginx-1.14.0 (有的人喜歡把原始碼包放在/usr/local/src/nginx-1.14.0)
1.2 切換到原始碼包
cd /usr/local/nginx-1.14.0
檢視nginx原有的模組
/usr/local/nginx/sbin/nginx -V
[[email protected] local]# /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.14.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) configure arguments: --prefix=/usr/local/nginx [[email protected] local]# 在configure arguments:後面顯示的原有的configure 引數如下:
--prefix=/usr/local/nginx
那麼我們的新配置資訊就應該這樣寫:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
進入原始碼包位置/usr/local/nginx-1.14.0 執行上面的命令即可,等配置完。
配置完成後,執行命令
make
這裡不要進行make install, 否則就是覆蓋安裝
然後備份原有已安裝好的nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
然後將剛剛編譯好的nginx覆蓋掉原有的nginx(這個時候nginx要停止狀態)
進入原始碼包位置/usr/local/nginx-1.14.0, 將剛剛編譯好的nginx檔案覆蓋掉原有的nginx檔案
cp ./objs/nginx /usr/local/nginx/sbin/
[[email protected] nginx-1.14.0]# cp ./objs/nginx /usr/local/nginx/sbin/ cp: overwrite ‘/usr/local/nginx/sbin/nginx’? y [[email protected] nginx-1.14.0]# 然後使用命令檢視是否已經加入成功
/usr/local/nginx/sbin/nginx -V
[[email protected] nginx-1.14.0]# /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.14.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module [[email protected] nginx-1.14.0]#
二 nginx配置檔案中配置https加密證書
題外話:https 加密證書申請是否需要繫結域名?
https證書申請肯定要提供域名,配置的時候也需要繫結域名的,如果沒有域名也可以繫結IP,兩者必須要有一個才能申請。
2.1 生成伺服器的RSA私鑰
[[email protected] ~]# mkdir /usr/local/nginx/conf/ssl [[email protected] ~]# cd /usr/local/nginx/conf/ssl [[email protected] ssl]# openssl genrsa -out server.key 2048
如圖:
2.2 生成伺服器的CSR證書請求檔案
CSR證書請求檔案是伺服器的公鑰,用於提交給CA機構進行簽名。生成csr(CSR,Cerificate Signing Request,CSR是您的公鑰證書原始檔案,包含了您的伺服器資訊和您的單位資訊,需要提交給CA認證中心。)的命令如下:
[[email protected] ssl]# openssl req -new -key server.key -out server.csr
在上述命令中,req 表示證書籤發申請, -new 表示新請求,-key server. key 指定私鑰為 server. key,-out server. csr 表示生成的 CSR 證書請求檔案的名稱為 server. csr。
值得一提的是,在填寫 common name 資訊時,必須與實際使用 HTTPS 的網站域名吻合,否則會引發瀏覽器警報。
2.3 CA為伺服器認證證書
[[email protected] ssl]# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
如圖:
上述指令用於使用CA的私鑰server.key 為伺服器CSR證書申請檔案server.csr 進行簽名認證。其中,x509是自簽名證書格式,days 365 用於設定簽發證書的有效期為365天。
2.4 在nginx.conf中配置https加密證書
server { listen 443 ssl; server_name 192.168.0.244; ssl_certificate /usr/local/nginx/conf/ssl/server.crt; ssl_certificate_key /usr/local/nginx/conf/ssl/server.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } } --------------------- 作者:wudinaniya 來源:CSDN 原文:https://blog.csdn.net/wudinaniya/article/details/82772127 版權宣告:本文為博主原創文章,轉載請附上博文連結!