https

來源:http://tw.freeimages.com/photo/computer-therms-2-1241965

接續 SSL For Free – 免費又有綠色鎖頭的 SSL Certificates 申請好 SSL Certificate 之後,這篇記錄一下怎麼樣把 SSL Certificate 加入 nginx 中,讓 http 可以進化成 https。

 

囉哩巴唆

小蛙剛接觸 nginx 的時候,真是吃盡了苦頭,雖然說功能非常強大,但是有些功能 google 了好久才勉強達到,這裡提供的一些作法也許不是最好,小蛙相信有更優雅的作法,不過至少能達成小蛙的需求,正所謂能解決問題的就是好方法!先達到功能,之後看到更好的作法再慢慢修正。

 

準備所需的 crt 及 key

把從 SSL For Free – 免費又有綠色鎖頭的 SSL Certificates 下載回來的 3 個檔案,分別是 ca_bundle.crt, certificate.crt, private.key,接下來我們要將 ca_bundle.crt 與 certificate.crt 合併,如果是用 windows 的話,用筆記本新增一個檔案叫做 bundle.crt,然後分別將 certificate.crt 跟 ca_bundle.crt 這兩個檔案的內容貼進 bundle.crt,要注意有沒有不小心複製到換行,或是空白字元,大概會變成下面這樣

-----BEGIN CERTIFICATE-----
...
certificate.crt 的內容
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
ca_bundle.crt 的內容
...
-----END CERTIFICATE-----

如果像小蛙一樣使用 Linux 的話,可直接輸入

cat certificate.crt ca_bundle.crt >> bundle.crt
// 接著用編輯器把以下的魂結斷開 
-----END CERTIFICATE----------BEGIN CERTIFICATE-----

魂結沒有斷開的話,會得到這個錯誤

[emerg] 20131#0: PEM_read_bio_X509_AUX("/etc/nginx/ssl/crazyall.net.crt") failed (SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line)

以小蛙的 nginx 為例,為了不要放檔案太亂,小蛙另外建了 ssl 資料夾,該目錄為 /etc/nginx/ssl/,並且將 bundle.crt 更名為 crazyall.net.crt,private.key 也更名為 crazyall.net.key,如此一來如果有多個網域搭配多個 SSL 會比較方便管理,完成後將 crazyall.net.crt 及 crazyall.net.key 複製到 /etc/nginx/ssl/ 資料夾中。

 

將 SSL 加入 nginx

這裡記錄給自己看,預設的 nginx 檔案會包含一小段搭配載入 php5-fpm 的部份,例如:

location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_read_timeout 120;
        fastcgi_index index.php;
        include fastcgi_params;
}

如果只有一個網域或一個站,直接這樣就好,但是像小蛙有 crazyall.net 以及 wazai.net 兩個,這一段就會重複,這時候可以把上面的內容獨立成 php.conf 並放在 /etc/nginx/ 資料夾下,接著從 /etc/nginx/sites-avaibale/wazai.net 設定檔中 include php.conf; 就可以了。

wazai.net 的設定部份如下

server {
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        server_name          wazai.net;
        ssl_certificate      /etc/nginx/ssl/wazai.net.crt;
        ssl_certificate_key  /etc/nginx/ssl/wazai.net.key;
        ... 以下省略 ...
}

這裡如果把 crazyall.net 使用一樣的設定就會得到下列錯誤

[emerg] 20005#0: a duplicate default server for 0.0.0.0:443 in /etc/nginx/sites-enabled/wazai.net:58

因此如果同一台主機上有不只一個網域要使用 SSL,就要改成下面這樣,加了 default_server 就直接錯給你看

server {
        listen 443 ssl;
        server_name          crazyall.net;
        ssl_certificate      /etc/nginx/ssl/crazyall.net.crt;
        ssl_certificate_key  /etc/nginx/ssl/crazyall.net.key;
        root /your_www_document;
        index index.php index.html index.htm;
        ... 以下省略 ...
}

經過這些修改 service nginx reload 就可以正常執行囉!試試看 https://your_domain/,如果是用 WordPress 架站的話,還會有很多很多很多問題需要克服,使用 Chrome 的 consloe 可以看到滿山滿谷的

滿山滿谷的 MixedContent

滿山滿谷的 MixedContent

而且網站打開來之後慘不忍睹, 這也是小蛙為什麼當初卻步的原因,下一篇根據 google 來的資料一一修正這些問題。

http://crazyall.net

正常的都瘋:http://crazyall.net

慘不忍睹的都瘋:https://crazyall.net

慘的都瘋:https://crazyall.net

 

參考資料:

  1. Nginx SSL Certificate Installation
    https://www.digicert.com/ssl-certificate-installation-nginx.htm
相關文章

[網站管理員工具] Google 網站管理員工具:http://s9134131.pixnet.net/ 的內容可能已違反品質規範

前幾天突然收到一封 Google 寄來的信,標題是小蛙在 pixnet 的網站 - 生活蛙齋違反品質規範,這篇文章記錄一下如果自認為自己的網站是沒有違反 Google 規定的解決方式。
2013-06-08 11:27:25
hans

18

網頁壓縮亂碼 – Lighttpd gzip php, js, css, html, plain

蛙齋速度慢的原因雖然有很大部份是在VPS的速度,在沒有經費可以提高VPS花費的情況下,只好從網站的優化開始做起,小蛙在
2011-12-29 23:59:46
hans

18

SSL For Free – 免費又有綠色鎖頭的 SSL Certificates

之前聽說 Google 會優先搜尋有 https 的網頁 (參考:
2016-07-07 23:00:54
hans

8

Android Vuforia with jPCT-AE (5) – 多重模型載入,以 obj 為例

要進到這系列最後一篇文章了,這篇文章拖了很久,一直沒有時間整理,結果到最後 ... 程式碼留下來了,記憶卻有些模糊了,這邊小蛙配著程式碼盡可能的把還記得的東西寫下來。
2016-07-06 11:24:19
hans

8

Android Vuforia with jPCT-AE (4) – 載入 3DS 測試

延續 jPCT-AE Loader 載入模型的部份,這篇要記錄載入 3ds 檔案格式的方法,基本上跟前面幾個 obj, md2 的方法差不多,只有一些小小的變化而已。
2016-07-06 10:24:33
hans

8

Android Vuforia with jPCT-AE (3) – 載入 md2 測試

前兩篇介紹如何直接透過 jPCT-AE 直接繪圖以及載入 .obj 檔案,這邊繼續介紹 jPCT-AE 載入 md2 的方法,載入動作大致上類似,唯一不同的只有 texture 設定部份。
2016-07-06 09:24:43
hans

8

Android Vuforia with jPCT-AE (2) – 載入 obj 測試

上一篇 Android Vuforia with jPCT-AE (1) –
2016-07-06 08:24:55
hans

8

Android Vuforia with jPCT-AE (1) – 基本範例

說來慚愧,從 Google Adsense 被 ban 之後,就好久沒有發文了,站上 Vuforia 的文章也已經是好久以前的事情了 (遠目),最近有專案要用到 Vuforia,爬以前的文回來看,蛙哩咧 ... 現在已經更新到 Vu
2016-07-06 07:57:58
hans

8

第一次從淘寶買小米盒子3

最近阿咕有在大螢幕上看韓劇的需求,剛好搭上 Chromecast 的上市,survey 了一些 Android 電視棒。這篇記錄這幾天的經過。

2015-01-04 23:36:33
hans

8

Qualcomm Vuforia 教學 (6) – 3D model -> .obj -> .h

終於來到 Vuforia 記錄的最後一篇了,這篇參考到網路上神人的做法,怎麼把一個 3D model 轉換成 Vuforia 可以使用的 .h 檔,這邊之後都直接使用 An
2014-12-10 11:25:50
hans

8




  4 則留言 to “nginx + SSL Certificate – 讓 http 變身成為 https”

  1. 我的博客皮肤和你这个一模一样。用了好几年。这个月初,刚好停了,服务器在其他地方,没转移到现在的服务器。

  2. 我也刚好遇到“a duplicate default server for 0.0.0.0:443”这个问题。原来,我是“太贪吃了”,每个server里都加了default,导致出现了这个问题。正如你所说,只有将默认里边加了“default”就可以了。

  3. 我找到解法了@@

    慘的都瘋:https://crazyall.net

    的http檔案request https問題應該能解了

    https://www.never-nop.com/?p=2526

 回覆

你可以使用以下語法 HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">

(required)

(required)

 
© 2012 蛙齋 Suffusion theme by Sayontan Sinha