2017-12-05 85 views
0

私はクライアント証明書のチェーンをSSL証明書に基づいて実行するWebサーバーであるクライアントサーバーアプリケーションで作業しています。サーバーはルートCA証明書を信頼します。クライアントはC++で開発されたWindowsアプリケーションであり、ルートCAによって署名された中間CAによって署名された証明書を持っています。 WinHttpSetOption apiをWINHTTP_OPTION_CLIENT_CERT_CONTEXTオプションで呼び出すと、https接続中にクライアント証明書を設定できます。ただし、これはクライアント証明書だけを設定し、チェーン全体は設定しません。サーバーにはストア内に中間CAがないため、クライアントを認証できません。WinHttpでクライアント証明書チェーンを設定する方法

フルチェーンが既にクライアントの証明書ストアに存在する場合、WinHttpで完全なクライアント証明書チェーンを設定する方法はありますか?

答えて

0

サーバーには事前にCA証明書が必要ですが、クライアントがそれを手渡すルートCAを信頼することはありません。 (私はそれが(サーバー側)が信頼できるCAによって署名された中間のCAを信頼するかどうかについてはわかりませんが、私の傾向はいいえと言います)。

クライアントから送信されるランダムなCAを信頼すると、証明書の検証のポイントがすべて失われるため、クライアントが送信するデータが実際に意味を持つかどうかはわかりません。したがって、サーバーの証明書ストアにルートCA証明書と中間CA証明書を追加します。 (もしあなたがそれにアクセスできない場合は、あなたは管理者と話をして、それをする必要があります)。

+0

サーバーには、信頼するルートCA(「A」など)があります。クライアントは証明書を持っています(「C」など)。これは、証明書A(A - > B - > C、ここで、証明書Bはサーバーが持っていない中間証明書である)から得られます。 –

0

私は、Sub CAをシステムストアに追加するしかありませんでした。サービスの起動またはインストール中に、CA証明書ストアを開き、証明書コンテキストを追加します。

関連する問題