![opensslのSSL証明書にCN /ホスト名解決が必要ですか?なぜ? [閉鎖]](https://linux33.com/image/38691/openssl%E3%81%AESSL%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%81%ABCN%20%2F%E3%83%9B%E3%82%B9%E3%83%88%E5%90%8D%E8%A7%A3%E6%B1%BA%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%E3%81%AA%E3%81%9C%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
「信頼証明書」やその他の属性がある場合...これはどのくらい重要ですか?
OpenSSLは今実装されましたか?そうでない場合、OpenSSLがこれを実装しないのはなぜですか?
答え1
SSLを使用するほとんどのプロトコル/アプリケーションでは、クライアントは次の2つのことを確認する必要があります。 (1) サーバが有効な証明書を提供します。これは、証明書が信頼できるCAによって発行され、期限切れ、キャンセル、または改ざんされていないことを意味します。 (2)証明書は、間違いや意図的な攻撃のためにあなたの接続がルーティングされた他の人ではなく、あなたが意図したサーバーに対するものです。 (まれにサーバー認証を必要とせず、機密のみを維持する場合は、明示的に認証しない「anon」または「aNULL」暗号スイートを使用することをお勧めします。)
これまで、OpenSSLは(1)を実行しますが、(2)は実行しません。、通常、トラストストアにあるCAルート証明書のみをサポートします。 1 つの CA ルートは、数千または数百万のサーバー証明書を「責任」できます。たとえば、Verisignが両方の証明書に証明書を発行したとしても、私のbigbankアカウントが欲しいというわけではありませんbigbank.com
。localdiner.com
localdinerさんと一緒にいます。したがって、アプリケーションはverify_callbackまたはハンドシェイクが完了した後(機密)データを送信する前に(2)を実行する必要があります。次のメジャーバージョンである1.0.2には、証明書チェーン検証の機能強化が含まれる予定であり、少なくとも場合によっては名前検証も可能であると思います。 RFC 2818 を使用する HTTPS または RFC 6125 を使用するその他の TLS ベースのプロトコルの場合は、タイトルに CommonName および SubjectAlternativeNames 拡張がある場合は確認する必要があります。
全然知らないOpenSSLを選択する理由(そしてその前にはSSLeay)これをしないでください。すでに。いくつかの珍しいSSL / TLSアプリケーションは、標準のCN / SAN以外のものが必要であると主張するかもしれませんが、OpenSSLが一般的なケースを処理し、まれな場合にコールバックやオプションを提供する他の分野もあります。おそらく仕事が多すぎて(最近まで)スタッフが足りないと思いました。