![](/img/trans.png)
[英]Node.js HTTPS server not responding when using RapidSSL certificate
[英]Installing a RapidSSL certificate on node/express
我對如何在我的節點服務器上配置 SSL 感到非常困惑!
我所做的是:
- 在我的本地機器上創建一個自簽名的密鑰和證書以進行本地測試
- 將此代碼添加到我的快速設置中
var privateKey = fs.readFileSync('privatekey.pem', 'utf8');
var certificate = fs.readFileSync('certificate.pem', 'utf8');
https.createServer({
key: privateKey,
cert: certificate
}, app).listen(port);
這在本地沒問題(我收到瀏覽器錯誤,但我明白這是因為我是自簽名的,而且我不是受信任的機構)。
現在我想使用真實證書進行部署,所以我從 RapidSSL 購買了一個。 他們在電子郵件中以明文形式向我發送了兩個密鑰,均采用以下格式
-----BEGIN CERTIFICATE-----
blah
-----END CERTIFICATE-----
一個標記為Web server CERTIFICATE
,另一個標記為INTERMEDIATE CA
我將Web server CERTIFICATE
的內容復制到一個名為(為了這個問題) prodPrivatekey.pem
的新文件,並將prodPrivatekey.pem
INTERMEDIATE CA
移動到prodCertificate.pem
。 然后我替換了上面代碼中的路徑。
首先,有人可以告訴我這個行動方針是否正確嗎? 假設我對 SSL 證書的內部運作幾乎一無所知!
其次,如果是這樣,我在此設置中遇到的錯誤是Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
。 我能找到的唯一幫助是這個問題Node.js https pem error:routines:PEM_read_bio:no start line但這里的幫助似乎與自簽名證書有關。
感謝您的任何幫助!
var privateKey = fs.readFileSync('privatekey.pem', 'utf8');
privateKey
應該是你的私鑰。 您不會向 RapidSSL 提供此信息或從 RapidSSL 收到此信息。
var certificate = fs.readFileSync('certificate.pem', 'utf8');
certificate
應該是 RapidSSL 已標記為 Web 服務器 CERTIFICATE 的證書
這留下了INTERMEDIATE CA
。 這是一個中間證書(介於您和 RapidSSL 的根證書之間)。 您需要將它包含在您的應用程序中,否則某些瀏覽器(例如 Android 上的瀏覽器)會看到指示“不受信任的證書”或類似性質的錯誤。
要將其包含在您的配置中,您可以執行以下操作:
var intermediateCertificate = fs.readFileSync('intermediate.pem', 'utf8');
https.createServer({
key: privateKey,
cert: certificate,
ca: [ intermediateCertificate ]
}, app).listen(port);
一旦成功並且您的站點是公開的,請使用在線掃描儀(例如SSL Labs Server Test)測試您站點的 SSL 配置,以查看您的 SSL 配置是否安全(得分 A 或 A+)。 根據您運行的節點版本,默認值可能不夠安全。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.