linxu下部署nginx的SSL證書(HTTPS)依賴模組與使用nginx.conf配置https協議詳解
一:開始Nginx的SSL模組
1.1 Nginx如果未開啟SSL模組,配置Https時提示錯誤
1 | nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:37 |
原因也很簡單,nginx缺少http_ssl_module模組,編譯安裝的時候帶上--with-http_ssl_module配置就行了,但是現在的情況是我的nginx已經安裝過了,怎麼新增模組,其實也很簡單,往下看: 做個說明:我的nginx的安裝目錄是/usr/local/nginx這個目錄,我的原始碼包在/usr/local/src/nginx-1.6.2目錄
1.2 Nginx開啟SSL模組
切換到原始碼包:
1 | cd /usr/local/src/nginx-1.11.3 |
檢視nginx原有的模組
1 | /usr/local/nginx/sbin/nginx -V |
在configure arguments:後面顯示的原有的configure引數如下:
1 | --prefix=/usr/local/nginx --with-http_stub_status_module |
那麼我們的新配置資訊就應該這樣寫:
1 | ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module |
執行上面的命令即可,等配置完
配置完成後,執行命令
1 | make |
這裡不要進行make install,否則就是覆蓋安裝
然後備份原有已安裝好的nginx
1 | cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak |
然後將剛剛編譯好的nginx覆蓋掉原有的nginx(這個時候nginx要停止狀態)
1 | cp ./objs/nginx /usr/local/nginx/sbin/ |
然後啟動nginx,仍可以通過命令檢視是否已經加入成功
1 | /usr/local/nginx/sbin/nginx -V |
Nginx 配置Http和Https共存
123456789 | server { listen 80 default backlog=2048; listen 443 ssl; server_name wosign.com; root / var /www/html; ssl_certificate /usr/local/Tengine/sslcrt/ wosign.com.crt; ssl_certificate_key /usr/local/Tengine/sslcrt/ wosign.com .Key; } |
把ssl on;這行去掉,ssl寫在443埠後面。這樣http和https的連結都可以用
Nginx 配置SSL安全證書重啟避免輸入密碼
可以用私鑰來做這件事。生成一個解密的key檔案,替代原來key檔案。
1 | openssl rsa - in server.key - out server.key.unsecure |
Nginx SSL效能調優
12345 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM; ssl_prefer_server_ciphers on ; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; |
=============================================================================
瞭解https
HTTPS 是以安全為目標的 HTTP 通道,即 HTTP 下加入 SSL 加密層。HTTPS 不同於 HTTP 的埠,HTTP預設埠為80,HTTPS預設埠為443。
SSL 證書是一種數字證書,它使用 Secure Socket Layer
協議在瀏覽器和 Web 伺服器之間建立一條安全通道,從而實現:
- 資料資訊在客戶端和伺服器之間的加密傳輸,保證雙方傳遞資訊的安全性,不可被第三方竊聽;
- 使用者可以通過伺服器證書驗證他所訪問的網站是否真實可靠。
獲取SSL證書
正式使用的話肯定是付錢由CA機構給頒發合法證書;部分CA機構也提供免費證書。
可申請的CA機構舉例:
1、阿里雲
2、StartSSL
具體申請步驟請自行查閱。
內部使用可以自己生成SSL證書(這個使用者訪問會提示證書無效或過期,存在安全隱患等等,內部人用直接信任繼續訪問即可使用),一般情況下用不到。
內部生成SSL證書步驟:
# 生成一個RSA金鑰
$ openssl genrsa -des3 -out ssltest.key 1024
# 拷貝一個不需要輸入密碼的金鑰檔案
$ openssl rsa -in ssltest.key -out ssltest_nopass.key
# 生成一個證書請求
$ openssl req -new -key ssltest.key -out ssltest.csr
# 自己簽發證書
$ openssl x509 -req -days 365 -in ssltest.csr -signkey ssltest.key -out ssltest.crt
第3步是生成證書請求,會提示輸入省份、城市、域名資訊等,重要的是,email一定要是你的域名字尾的。這樣就有一個 csr
檔案了,提交給 ssl 提供商的時候就是這個 csr
檔案。
當然我這裡並沒有向證書提供商申請,而是在第4步自己簽發了證書。到這裡證書就生成成功到目標目錄下,名字為ssltest.crt
,還有ssltest_nopass.key
,名字可以根據自己需要在生成的時候進行修改。
伺服器啟用https
以nginx伺服器示例。我們只需要在自己網站的配置檔案nginx.conf中的server端增加以下配置;
listen 443 ssl;
# ssl on;
ssl_certificate /etc/nginx/ssltest.crt;
ssl_certificate_key /etc/nginx/ssltest_nopass.key;
完整示例:
server {
listen 443 ssl;
listen 80;
server_name 52fhy.com www.52fhy.com;
index index.php index.html index.htm;
root /www/52fhy.com/;
#ssl on;
ssl_certificate_key /usr/local/nginx/conf/52fhy.com.key;
ssl_certificate /usr/local/nginx/conf/1_52fhy.com_bundle.crt;
if ($scheme = http) {
# rewrite ^(.*)$ https://$host$1 permanent;
}
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 1h;
}
access_log /usr/local/nginx/log/access/52fhy.com.log;
}
注意:這個
ssl on
我本來是加上的,但是發現這樣http就不能訪問了,去掉後且listen 443 ssl
能同時支援http和https。listen 443 ssl
表示僅443埠使用ssl。
重啟之後網站就可以用https訪問啦,同時還支援http訪問。
常見問題
網頁引入的站外資源載入不了
例如頁面引入了百度地圖的資源,開啟控制檯發現使用https後加載不了,直接block了。
原因是覽器預設是不允許在 https 裡面引用 http 資源的。
解決辦法是將http://
改成相對協議//
。具體使用方法為:
<img src="//domain.com/img/logo.png">
簡而言之,就是將URL的協議(http、https)去掉,只保留//
及後面的內容。這樣,在使用https的網站中,瀏覽器會通過https
請求URL,否則就通過http
傳送請求。
當然,如果站外連結的資源不支援https還是載入不了的。這時候可以採用其它方法,如使用 iframe,或者使用nginx方向代理將https轉向http。
以下是使用騰訊用的證書和私鑰在nginx.conf中的配置
server {
listen 443;
server_name xxx.com.cn;
ssl on;
ssl_certificate /usr/share/nginx/conf/1_xxx.com.cn_bundle.crt;
ssl_certificate_key /usr/share/nginx/conf/2_xxx.com.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
include /etc/nginx/default.d/*.conf;
location /r/ {
rewrite ^/r/(.*) /$1 break;
proxy_pass http://localhost:8080;
}
location / {
root /data/ifmall/static/;
index index.html index.htm;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
相關推薦
linxu下部署nginx的SSL證書(HTTPS)依賴模組與使用nginx.conf配置https協議詳解
一:開始Nginx的SSL模組1.1 Nginx如果未開啟SSL模組,配置Https時提示錯誤1nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/n
linux下Nginx配置文件(nginx.conf)配置設置詳解(windows用phpstudy集成)
兩個 response 機制 .so 不用 filename 發送 php文件 code linux備份nginx.conf文件舉例: cp /usr/local/nginx/nginx.conf /usr/local/nginx/nginx.conf-2017111
vue-cli生成的模板各個檔案詳解(轉) vue-cli腳手架中webpack配置基礎檔案詳解
vue-cli腳手架中webpack配置基礎檔案詳解 一、前言 原文:https://segmentfault.com/a/1190000014804826 vue-cli是構建vue單頁應用的腳手架,輸入一串指定的命令列從而自動生成vue.js+wepack的專案模板。這其中webpack發揮了很大
深度優先搜尋(DFS)遞迴與非遞迴實現邏輯詳解
遞迴與非遞迴: 資料結構對於學習程式設計的人來說是非常重要的,我們在現實生活碰到的各種煩難問題可以用遞迴來實現,一個遞迴思想就把問題給簡單化了,但是我們都知道遞迴是非常耗時的,一旦資料量龐大起來,遞迴
Linux 下wifi 驅動開發(二)—— WiFi模組淺析
一、什麼是wifi 模組 百度百科上這樣定義: Wi-Fi模組又名串列埠Wi-Fi模組,屬於物聯網傳輸層,功能是將串列埠或TTL電平轉為符合Wi-Fi無線網路通訊標準的嵌入式模組,內建無線網路協議IEEE802.11b.g.n協議棧以及TCP
Linux下串列埠通訊詳解(上)開啟串列埠和串列埠初始化詳解
linux下串列埠通訊主要有下面幾個步驟 串列埠通訊流程圖 下面我會一一介紹這幾個步驟。 1.開啟串列埠 程式碼(串列埠為ttyUSB0) //開啟串列埠 int open_port(void) { int fd; fd=open("/dev/ttyUSB0
Linux基礎系列:常用命令(5)_nfs服務與nginx服務
ash .com access emctl 磁盤 keepalive roo inux iptable 介紹: NFS 是Network File System的縮寫,即網絡文件系統。一種使用於分散式文件系統的協定,由Sun公司開發,於1984年向外公布。功能是通過
排序算法(四)堆排序的Python實現及算法詳解
python 堆排序 一、前言如果需要Java版本的堆排序或者堆排序的基礎知識——樹的概念,請參看本人博文《排序算法(二)堆排序》關於選擇排序的問題選擇排序最大的問題,就是不能知道待排序數據是否已經有序,比較了所有數據也沒有在比較中確定數據的順序。堆排序對簡單選擇排序進行了改進。二、準備知識堆:它是一
ansible小結(四)ansible.cfg與默認配置
false 跳過 ans sts host ase sin class 配置 FAILED => Using a SSH password instead of a key is not possible because Host Key checking is en
真實感海洋的繪制(一):基於統計學模型的水面模擬方法詳解
最簡 自動生成 nbsp imu gif bubuko fourier div img 真實感海洋的繪制(一):基於統計學模型的水面模擬方法詳解 學習了基本的OpenGL和圖形學知識後,第一個想做的事情就是畫水(笑),因為對我而言各種遊戲裏面往往最令人印象深刻的就是那波光粼
ZABBIX(五) Zabbix 主機與組的配置
mini enable vpd 傳輸 not ted 之間 algo pro 在zabbix中,主機(host)的定義不單單指類Linux、Windows等服務器,還包括路由器、交換機等其他設備。在此我們將單獨介紹各類設備主機的添加方法。一、創建主機方法
Java詳解(2)--JDK安裝與環境變數配置
JDK安裝與環境變數配置 --------------------- 作者:文動天下 來源:CSDN 連結:https://blog.csdn.net/li_yi_kun?t=1 版權宣告:本文為博主原創文章,轉載請附上博文連結! 1、JDK&nb
DeepLearning tutorial(4)CNN卷積神經網路原理簡介+程式碼詳解
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
即時通訊音視訊開發(十):實時語音通訊的迴音消除技術詳解
前言 即時通訊應用中的實時音視訊技術,幾乎是IM開發中的最後一道高牆。原因在於:實時音視訊技術 = 音視訊處理技術 + 網路傳輸技術 的橫向技術應用集合體,而公共網際網路不是為了實時通訊設計的。 系列文章 《即時通訊音視訊開發(八):常見的實時語音通訊編碼標準》 《即時通訊
DeepLearning tutorial(3)MLP多層感知機原理簡介+程式碼詳解
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
-控制反轉:削減 (降低)依賴 ----》IOC的xml配置
通過 2種建立物件的方式 來 理解 IOC 傳統的 建立------. 直接new: 有自主 的 ----會消耗更多的 明顯的依賴關係 APP–1資源- APP-2資源- APP–3資源- APP–4資源 IOC-----》通過工廠----》獲取 資源的 你可以在 你的類裡 既可以 ne
Python 中的黑暗角落(三):模組與包
如果你用過 Python,那麼你一定用過 import 關鍵字載入過各式各樣的模組。但你是否熟悉 Python 中的模組與包的概念呢?或者,以下幾個問題,你是否有明確的答案? 什麼是模組?什麼又是包?from matplotlib.ticker import Format
查詢(二)簡單清晰的B樹、Trie樹詳解
查詢(二) 散列表 散列表是普通陣列概念的推廣。由於對普通陣列可以直接定址,使得能在O(1)時間內訪問陣列中的任意位置。在散列表中,不是直接把關鍵字作為陣列的下標,而是根據關鍵字計算出相應的下標。 使用雜湊的查詢演算法分為兩步。第一步是用雜湊函式將被查詢的鍵轉化為陣
Maven學習筆記(一)-Maven安裝與環境變數配置
一、下載Maven 官網地址:http://maven.apache.org/ 去官網上下載最新的maven. 然後解壓到安裝目錄中,這裡我直接解壓到D盤,如圖所示是maven安裝包的目錄結構。 二、安裝Maven 配置mave
面試之路(25)-斐波那契數列類問題的詳解
斐波那契數列介紹: 常見的遞迴解法: int Fibonacci(int n){ if(n <= 0){ return 0; } if(n == 1){ return 1; }