10

自己署名 CA 証明書を使用して作成された証明書を使用して、https サーバーを実行しています。

ここで、https サーバーに接続されている Socket.io サーバーに Socket.io クライアントを接続します。残念ながら、次のようなエラーが表示されます。

Error: UNABLE_TO_VERIFY_LEAF_SIGNATURE
    at SecurePair.<anonymous> (tls.js:1271:32)
    at SecurePair.EventEmitter.emit (events.js:92:17)
    at SecurePair.maybeInitFinished (tls.js:883:10)
    at CleartextStream.read [as _read] (tls.js:421:15)
    at CleartextStream.Readable.read (_stream_readable.js:293:10)
    at EncryptedStream.write [as _write] (tls.js:330:25)
    at doWrite (_stream_writable.js:211:10)
    at writeOrBuffer (_stream_writable.js:201:5)
    at EncryptedStream.Writable.write (_stream_writable.js:172:11)
    at write (_stream_readable.js:547:24)
    at flow (_stream_readable.js:556:7)

基本的に、このエラーは、証明書を正常に検証できなかったことを示しています。これは、対応する CA 証明書が自己署名されているためです。https リクエストを使用する場合、信頼する CA を指定できます。

この場合、Socket.io を接続するにはどうすればよいですか?

PS: 私は Node.js 0.10.0 と Socket.io 0.9.13 を実行しています。

4

4 に答える 4

-1

の自己署名証明書の使用方法については、こちらを確認してくださいCertificate Signing Request。自己署名証明書を使用した接続を許可するには、次を指定する必要があります。

  1. key: クライアントの秘密鍵を PEM 形式で含む文字列またはバッファー。
  2. cert: クライアントの証明書キーを PEM 形式で含む文字列またはバッファー。
  3. ca: 信頼できる証明書の文字列またはバッファーの配列。これを省略すると、VeriSign などのよく知られている「ルート」CA がいくつか使用されます。これらは、接続を承認するために使用されます。

CSR を使用して自己署名証明書を作成するには、次の操作を行います。

openssl x509 -req -in ryans-csr.pem -signkey ryans-key.pem -out ryans-cert.pem

クライアントでは、ソケットは次のように使用する必要があります

var socket = io.connect('https://localhost', {secure: true});
于 2013-03-12T19:06:06.507 に答える
-15

自己署名証明書を使用しないでください。一部のブラウザーでは、WebSocket を使用するときにそれらを受け入れる方法がありません。そして、適切な証明書を購入しないため、あなたは安っぽい馬鹿のように見えます。

From They see me pollin, they hatin (p. 23) . Socket.IO のコア チーム メンバーである Arnout Kazemier (3rdEden) によるプレゼンテーション。

于 2013-03-13T14:28:10.340 に答える