5

ホスト名/IPに対する私の回答で指摘されているように、証明書のaltnameと一致しませんNode.jsは、要求されたホスト名が証明書の共通名(CN)として指定されている場合、ホスト名のTLS証明書を正常に検証します。

Request    : localhost
Common Name: localhost
=> Success

IPアドレスに対して同じことを試みると、検証が失敗します。

Request    : 192.168.178.31
Common Name: 192.168.178.31
=> Fail

IPアドレスをサブジェクト代替名(SAN)として指定した場合にのみ機能します。

Request                 : 192.168.178.31
Common Name             : 192.168.178.31
Subject Alternative Name: 192.168.178.31
=> Success

証明書を作成するときのホスト名(CN)としてのIPアドレスへの回答で説明されているように?(HTTPSホスト名が間違っています:<ipAddress>である必要があります)

証明書にIPアドレスを使用することはお勧めしません[...]。

別の方法として、 SSL証明書サーバー名はどのように解決されますか/ keytoolを使用して別の名前を追加できますか?の回答で提案されています。IPアドレスをSANとして追加します(これはNode.jsで機能します)。

今私の質問は次のとおりです。推奨されないということは、間違っている、または禁止されているという意味ではありません。Node.jsがCNでIPアドレスをサポートしないことが推奨されないことを除いて、特定の理由はありますか、またはサポートした場合にリスク(セキュリティなど)になる理由はありますか?

4

1 に答える 1

4

実装は、 HTTPS 仕様に準拠しているだけです。

場合によっては、URI がホスト名ではなく IP アドレスとして指定されます。この場合、iPAddress subjectAltName が証明書に存在し、URI の IP と正確に一致する必要があります。

あなたが引用した回答で「お勧めしません」と言ったとき、それはHTTPSを使用するときに一般的にIPアドレスを使用することに関するものでした. 一部のブラウザではそれを回避できますが、「必要」という言葉を使用している仕様も引用しました。言うまでもなく、RFC は、ここで見つけたどの回答よりも信頼できます。

于 2012-12-30T11:39:30.353 に答える