11

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サーバーで同じことを実行してみましたが、動作します。

4

2 に答える 2

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 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/から取得

于 2012-05-01T16:35:35.503 に答える
3

私と同じように、この記事https://tootallnate.net/setting-up-free-ssl-on-your-node-serverに従ったと思いますが、あなたと同じ問題が発生しました。しかし、StartCom から取得したすべてのファイルを何度も確認したところ、誤って証明書と秘密鍵を ANSI ではなく UTF8 として保存していたことがわかりました。ファイルのエンコーディングをANSIに変更した後、node.jsは魅力的に機能し始めました:)

于 2012-07-16T16:37:15.310 に答える