1. 程式人生 > >linxu下部署nginx的SSL證書(HTTPS)依賴模組與使用nginx.conf配置https協議詳解

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/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模組

切換到原始碼包:

1cd /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

執行上面的命令即可,等配置完

配置完成後,執行命令

1make

這裡不要進行make install,否則就是覆蓋安裝

然後備份原有已安裝好的nginx

1cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

然後將剛剛編譯好的nginx覆蓋掉原有的nginx(這個時候nginx要停止狀態)

1cp ./objs/nginx /usr/local/nginx/sbin/

然後啟動nginx,仍可以通過命令檢視是否已經加入成功

1/usr/local/nginx/sbin/nginx -V 

Nginx 配置Http和Https共存

123456789server {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檔案。

1openssl rsa -in server.key -out server.key.unsecure

Nginx SSL效能調優

12345ssl_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 伺服器之間建立一條安全通道,從而實現:

  1. 資料資訊在客戶端和伺服器之間的加密傳輸,保證雙方傳遞資訊的安全性,不可被第三方竊聽;
  2. 使用者可以通過伺服器證書驗證他所訪問的網站是否真實可靠。

獲取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

linuxNginx配置文件(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等服務器,還包括路由器、交換機等其他設備。在此我們將單獨介紹各類設備主機的添加方法。一、創建主機方法

Java2--JDK安裝環境變數配置

JDK安裝與環境變數配置 ---------------------  作者:文動天下 來源:CSDN  連結:https://blog.csdn.net/li_yi_kun?t=1 版權宣告:本文為博主原創文章,轉載請附上博文連結! 1、JDK&nb

DeepLearning tutorial4CNN卷積神經網路原理簡介+程式碼

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

即時通訊音視訊開發:實時語音通訊的迴音消除技術

前言 即時通訊應用中的實時音視訊技術,幾乎是IM開發中的最後一道高牆。原因在於:實時音視訊技術 = 音視訊處理技術 + 網路傳輸技術 的橫向技術應用集合體,而公共網際網路不是為了實時通訊設計的。 系列文章 《即時通訊音視訊開發(八):常見的實時語音通訊編碼標準》 《即時通訊

DeepLearning tutorial3MLP多層感知機原理簡介+程式碼

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!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; }