2012-04-14 27 views
11

我正在拆分試圖使用StartSSL證書運行HTTPS服務器的頭髮。我從他們的所有必要的文件和我通過將其在createServer參數使用它們:使用StartSSL證書在Mac OSX上的Node.js上啓動HTTPS時出錯

var options = 
{ 
    ca:  FS.readFileSync('sub.class1.server.ca.pem'), 
    key: FS.readFileSync('ssl.key'), 
    cert: FS.readFileSync('ssl.crt') 
}; 

這是我的錯誤。

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line 
    at Object.createCredentials (crypto.js:87:31) 
    at HTTPSServer.Server (tls.js:914:28) 
    at HTTPSServer.Server (https.js:33:14) 
    at HTTPSServer.HTTPSServer (/Users/myUserName/node_modules/connect/lib/https.js:34:16) 
    at new HTTPSServer (/Users/myUserName/node_modules/express/lib/https.js:38:23) 
    at Object.createServer (/Users/myUserName/node_modules/express/lib/express.js:43:12) 
    at Object.<anonymous> (/Users/myUserName/Sites/node.js/https/app.js:12:36) 
    at Module._compile (module.js:441:26) 
    at Object..js (module.js:459:10) 
    at Module.load (module.js:348:31) 

我想也許我應該將證書轉換爲PEM。但運行:

openssl x509 -in ssl.crt -out ssl.der -outform DER 

...給我類似的錯誤

unable to load certificate 
67304:error:0906D06C:PEM routines:PEM_read_bio:no start line:/SourceCache/OpenSSL098/OpenSSL098-44/src/crypto/pem/pem_lib.c:648:Expecting: TRUSTED CERTIFICATE 

任何想法,爲什麼?

更新:這隻發生在OSX上。我試着在Ubuntu服務器上運行相同的東西,它的工作原理。

回答

7

我有同樣的問題。但是我可以確認,在我的機器上(macbook osx 10.7.3),https現在使用自簽名證書無誤地運行。

特定錯誤意味着它要麼無法找到這些文件,或有沒有在文件中首先(你可以通過傳遞一個空字符串或使用無效的文件路徑證實了這一點。)

,請嘗試使用絕對路徑 - 例如FS.readFileSync(__ dirname +'ssl.crt')。

也打開你的證書和密鑰文件,並確認它們包含在表單數據:「----- BEGIN」 ......等

還注意到,雖然您的文件.cert和.KEY文件,文檔指的是帶有.pem擴展名的證書和密鑰文件。

http://nodejs.org/api/https.html

據我瞭解,沒有太大的區別,內容似乎很相似我,但這些東西可能是繁瑣。

這裏是一個.csr文件文件轉換成的.pem文件的命令:

OpenSSL的X​​509 -req -in certrequest.csr -signkey privatekey.pem退房手續certificate.pem

http://silas.sewell.org/blog/2010/06/03/node-js-https-ssl-server-example/

3

我認爲你跟着這篇文章https://tootallnate.net/setting-up-free-ssl-on-your-node-server跟我一樣,我也遇到了同樣的問題。但經過多次檢查我從StartCom中檢索到的所有文件後,我發現我意外地將認證和私鑰保存爲UTF8,而不是ANSI。將文件的編碼更改爲ANSI後,node.js開始像魅力一樣工作:)