使用StartSSL证书在Mac OSX上的Node.js上启动HTTPS时出错

我正在拆分头发试图使用StartSSL证书运行HTTPS服务器。 我从他们那里获得了所有必要的文件,并通过将它们传递给createServer参数来使用它们:

 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服务器上运行相同的东西,它的工作原理。

我有同样的问题。 但是我可以确认,在我的机器上(macbook osx 10.7.3)节点https现在运行没有错误使用自签名证书。

该特定的错误意味着它无法find文件,或者文件中没有任何内容(您可以通过传递空string或使用无效的文件path来确认)。

首先尝试使用绝对path – 例如FS.readFileSync(__ dirname +'ssl.crt')。

也打开您的证书和密钥文件,并确认它们包含的数据forms为:“—– BEGIN”等。

还要注意,虽然文件是.cert和.key文件,但是文档引用了扩展名为.pem的证书和密钥文件。

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

从我的理解来看,没有太大的差别,内容看起来和我很相似,但是这些东西都可以搞砸。

这是一个将.csr文件转换为.pem文件的命令:

openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem

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

我认为你跟着我的这篇文章https://tootallnate.net/setting-up-free-ssl-on-your-node-server ,我也遇到了同样的问题。 但经过多次检查,我从StartCom检索到的所有文件,我发现我不小心保存authentication和私钥为UTF8,而不是ANSI。 在将文件的编码更改为ANSI之后,node.js开始像魅力一样工作:)