2012-04-25 58 views
2

我有一個Node.js應用程序在我的Linode服務器上運行,我的服務器需要SSL。如何獲取SSL證書與我的Node.js應用程序有關?

我明白我需要購買一個,像這樣:http://www.namecheap.com/ssl-certificates/comodo/essential-ssl-certificate.aspx

我明白我需要一個專用的IP地址,並按照下列指示:http://library.linode.com/security/ssl-certificates/commercial

我不明白的是我如何節點應用程序會知道這個SSL證書?我的Node應用程序是否關心?

回答

2

您應該運行一個https服務器。

如果您正在運行expressjs,您可以這樣做 - 使用從您的SSL提供商獲得的證書和密鑰。

var express = require('express') 
    , fs = require("fs"); 

var privateKey = fs.readFileSync('security/privatekey.pem').toString(); 
var certificate = fs.readFileSync('security/certificate.pem').toString(); 

// to enable https 
var app = module.exports = express.createServer({key: privateKey, cert: certificate}); 

希望有所幫助。

編輯:

你可以看看這個link - 這傢伙是使用標準的節點服務器實現的,不能表達。不過,我不確定安全API是否發生了變化 - 這篇文章已近2年之久。

1

您的服務器需要配置證書(及其私鑰),因爲它向用戶證明了其身份。在HTTPS連接啓動時,服務器證書在TLS握手期間呈現給瀏覽器。

這應該隻影響服務器本身的配置。服務器提供的實際應用程序代碼不需要知道它(也可能不應該,以減少通過錯誤代碼泄漏私鑰的風險)。

+0

我99%同意這一點,但是如果你允許應用程序運行在http或https上,它至少需要知道請求通過哪個協議,以便在生成時使用正確的基本協議模板和響應中的鏈接等。 – 2012-04-25 22:09:21

+0

您可以使用協議相關URL來避免需要動態執行此操作。沿着「//stackoverflow.com」行的URL將自動使用與當前頁面相同的協議。儘管如此,仍然會有一些情況希望確保訪問者僅通過https訪問某些「頁面」(例如登錄頁面)。 – Kitsune 2012-08-04 02:42:52

+0

@Kitsune,這與協議相關的URL完全沒有關係。使用這樣的URL不會使服務器偵聽端口443或將其配置爲通過HTTPS提供頁面。這不會發生魔法。 – Bruno 2012-08-04 10:48:23