SSL + nginx + node.js

申請SSL以後, 用nginx架網站, 並由node.js app提供服務.

我是申請GoDaddy的SSL,很久以前申請的,只是買了兩張,一張因為意外沒使用到。首先當然就是要申請好你的SSL,此時會需要你的CSR( Certificate Signing Request ),產生的方法是用openssl指令:

然後會有對話介面要你輸入一些基本資料

輸入完就有兩個檔案:ohyeah.csr跟ohyeah.key

把CSR檔的內容填到GoDaddy的網站就OK了,再來他會寄信給你,要你驗證這個網址是你的,在網頁根目錄放個檔案,檔案內容是他寄給你的unique ID即可。

每一家的申請流程在細節上會有不同喔,自己注意一下說明文件。

 

再來是nginx的動作。

GoDaddy的SSL申請好以後,可以去下載一個安裝檔,而這個所謂安裝檔,其實是一個ZIP檔,裡面就兩個CRT檔,把這兩個檔案先傳到Server那裡去。這兩個CRT檔,一個是伺服器的憑證,一個是GoDaddy的憑證,現在要把兩個憑證合一,用cat來做就好。

再來就是去改nginx的設定啦,假設你要申請的網址是www.mlab.tw

上面那個www.mlab.tw.chained.crt就是剛才合併出來的CRT檔,而key檔是最開始用openssl產生的,在那裡不是有產生兩個檔案嗎?一個拿去申請SSL,另一個就是現在用啦。

基本上,就這樣就做完了….

然而你可以做個更貼心的事,把所有原本要走http的都導到https (來源: NGINX 設定 HTTPS 網頁加密連線,建立自行簽署的 SSL 憑證)

這樣一來,即使原本他要連的是http://www.mlab.tw,也會自動導到 https://www.mlab.tw

 

啊Node.js咧?

node.js的apps原本是以express建立http的服務,透過nginx的轉址來取得req,丟回去res。在這個流程中,node.js的程式碼不需要變動,不需要自己去node.js app裡面建立https server,方便很多喔。

 

 

參考資料

  1. nginx (http://nginx.org/en/docs/http/configuring_https_servers.html#chains)
  2. NGINX 設定 HTTPS 網頁加密連線,建立自行簽署的 SSL 憑證
  3. GoDaddy (https://www.godaddy.com/help/nginx-install-a-certificate-6722)
  4. Configuring Nginx and SSL with Node.js (https://www.sitepoint.com/configuring-nginx-ssl-node-js/)

 

 

Leave a Reply

你的電子郵件位址並不會被公開。 必要欄位標記為 *