2015-10-25 34 views
6

SSLを使ってsocket.ioでソケットしたいです。 ...エラーとexpress with socket.ioのSSL:PFXまたは証明書+秘密鍵がありません。

{ key: <Buffer 41 ...>, 
cert: <Buffer 4a ...> } 

このエラー

var ssl_options = { 
    key : fs.readFileSync(my_key_path), 
    cert : fs.readFileSync(my_cert_path) 
}; 

var protocol = "https"; 

preparedApp = require(protocol).createServer(ssl_options,app); 

var io = require('socket.io')(preparedApp); 

preparedApp.listen(8080, function(){}); 
io.on('connection', function(socket){}); 

そして、ここで私のssl_optionsのログです:私は他の回答を読みましたが、何もここで

を働いていないが、私のコードですタイトルはthrow new Error('Missing PFX or certificate + private key.');です。誰が何が起きているのか知っていますか?この答えに対する他の解決策のどれも私の場合を解決しませんでした。

答えて

2

秘密鍵にPEM(RSA)形式を使用します。秘密鍵が "----- BEGIN RSAプライベートキー-----"と "----- END RSAプライベートキー-----"で囲まれたbase64でエンコードされていることを確認してください。

Fromドキュメント:

  • キー:PEM形式でサーバの秘密鍵を含む文字列またはバッファ
  • CERT:秘密鍵のパスフレーズの列:PEMエンコードされた証明書
  • パスフレーズを保持する文字列またはpfx [オプションのデフォルト:null]

または

  • PFX:作成するにはopenssl rsa -in <PATH TO KEY> -out key.pem -outform PEM

    :RSA PEMへの秘密鍵を変換する文字列またはPFXを保持するバッファまたはPKCS12エンコードされた秘密鍵、証明書およびCA証明書

PKCS#12のバンドルを使用openssl pkcs12 -export -in cert.pem -inkey key.pem -certfile ca.pem -out host.pfx

- ADDITION -

ensuへ証明書はPEMでエンコードされています。openssl x509 -in <PATH TO CERT> -out cert.pem -outform PEM

+0

基本的に私が言ったコマンドを使用して.keyを.pemに変換しました。その後私は 'のvar ssl_optionsに自分のコードを変更し= { キー:fs.readFileSync(my_pem_path)、 CERT(.PEMである):fs.readFileSyncは(my_cert_path)は(.CRTである) };' しかしそれでも同じエラーで失敗しました。何か案が? – Fane

+0

crtをpemとしてエンコードしてみてください。私の答えの追加を参照してください。 – windm

+0

nope ...まったく同じもの:( – Fane

関連する問題