2013-04-07 39 views
5

版本的NodeJS:0.8.6
我已經建立使用用openssl用下面的命令一個SSL CSR文件: OpenSSL的REQ -nodes -newkey RSA:2048 -keyout myserver.key -out myserver.csrhowto create nodejs ssl server?

  • csr內容已發送至我的SSL提供商,證書已發回。

現在我想建立一個SSL安全服務器:

var fs = require("fs"); 
var https = require('https'); 
var credentials = { 
      key: fs.readFileSync(options.base_project_folder + 'privatekey.pem'), 
      cert: fs.readFileSync(options.base_project_folder + 'certificate.pem') 
}; 
var server = https.createServer(credentials, app); 
server.listen(port, address, function() { 
    var addr = this.address(); 
    console.log('listening on %s:%d', addr.address, addr.port); 
}); 

服務器正在運行,但我得到: 「SSL連接錯誤」

想檢查我做的問題: 的OpenSSL的s_client.First -connect my_dns:443 // my_dns點到我的服務器的NodeJS ofcourse

結果: 連(00000003) 139813382997664:錯誤:140790E5: SSL套路:SSL23_WRITE:SSL握手失敗:s23_lib.c:177:
可用
發送
SSL握手已經閱讀0字節,寫字節226無客戶端證書CA名沒有同行證書
新,(無),密碼是(NONE)
安全的重新協商不支持
壓縮:NONE
擴展:NONE

誰能幫助我?我在SSL黑暗中迷路了:(

+0

您發佈的服務器代碼不完整。或者您沒有發佈剩餘的內容(如果是這樣,請將其發佈),或者您只是缺少在Node中創建實際HTTPS服務器的重要部分。 – robertklep 2013-04-07 17:14:18

+0

我編輯了代碼,希望這有助於找到我的問題。 – IdanHen 2013-04-07 17:30:26

+0

而'port'等於'443',對吧? – robertklep 2013-04-07 17:34:49

回答

7

嘗試添加CA像這樣:

var credentials = { 
    key: fs.readFileSync(options.base_project_folder + 'privatekey.pem'), 
    cert: fs.readFileSync(options.base_project_folder + 'certificate.pem'), 
    ca: fs.readFileSync(/path/to/CA/cert) 
}; 

The docs say選項參數類似於tls.createServer

+0

ca文件是什麼? 它的內容是什麼?我試圖找出它:( – IdanHen 2013-04-07 19:19:18

+0

問題被發現,我的文件有問題,我也需要ca :) – IdanHen 2013-04-08 08:16:31

+1

http://www.benjiegillam.com/2012/06/node-dot-js-ssl-證書鏈/我通過評論其他答案中的鏈接找到了一個重要的觀點。在較新版本的Node中,「ca」屬性不會綁定文件;如果您有多箇中間證書,則必須將它們單獨加載到數組中,並將「ca」屬性設置爲該數組。 – lawrence 2014-04-10 21:00:33