web-dev-qa-db-ja.com

相互SSL認証-クライアント証明書とサーバー証明書

リモートWebサービスに接続し、クライアント証明書を使用する必要があるWebアプリケーションをセットアップしています。私のWebアプリはHTTPSを使用して接続し、ドメインの既存のワイルドカード証明書を使用して構成しています。

ワイルドカード証明書の公開鍵をクライアント証明書として使用できますか?リモートWebサービス管理者に提供して、信頼できるクライアント証明書のリストに追加できるようにする必要があります。

ワイルドカードの公開鍵をクライアント証明書として使用することに不利な点はありますか?この方法で実行できない/実行すべきでない場合、代わりにどのような種類の証明書を使用できますか?

1
blizz

1つの欠点は、秘密鍵が2台のマシンにある可能性があることです。

定義上、クライアントキーは秘密にする必要があります。共有されている場合、それはプライベートではありません。

これにより、証明書に対する誰もが持つことができる信頼が即座に低下します。そのサーバーの他のすべてのユーザー(存在する場合)は、その秘密鍵が共有されていることがわかっているため、サーバーを信頼できなくなりました。

質問には、独自のCAを使用しているか商用CAを使用しているかは記載されていません。商用の場合は、秘密鍵を共有することでCAの利用規約に違反している可能性があります。

クライアント用に別の証明書を作成するのが最善です。独自のCAを実行している場合は、別の証明書を作成するだけです。商用の場合は、クライアント用に新しい証明書を購入するか、 無料のもの を取得します。いずれにせよ、証明書に拡張キー使用法フィールドがある場合は、「サーバー認証」ではなく「クライアント認証」が含まれていることを確認してください。

明確にしたように、セットアップはクライアントとサーバーとして機能する1台のマシンです。この状況では、サーバー認証とクライアント認証の証明書プロファイルのわずかな違いに注意する必要があります。

サーバー証明書には、サーバーのDNS名がCommonName(CN)またはSubject Alternative Name(SAN)、あるいはその両方として含まれます。クライアント証明書は通常あなたのメールアドレスをCNとして持っていますが、それ以外の理由はありません。

サーバー証明書の拡張キー使用法の拡張子はserver authenticationである必要がありますが、クライアント証明書の場合はclient authenticationである必要があります。これにより問題が発生する可能性があります。

3
garethTheRed