IIS 8.にクライアント証明書認証を実装しようとしています。開発マシンに構成を展開し、期待どおりに機能することを確認しました。ただし、サーバーにセットアップした後、サイトでクライアント証明書の入力を求められます。選択すると、403.16エラーがすぐに表示されます。失敗したリクエストログには、エラーコード2148204809と「証明書チェーンは処理されましたが、信頼によって信頼されていないルート証明書で終了しました」というメッセージが表示されますプロバイダー。」
有効なクライアント証明書と有効なCA証明書があります。 CA証明書は、サーバーとクライアントマシンの両方のコンピューターアカウントの信頼されたルート機関にインストールされ、クライアント証明書は、クライアントマシンの現在のユーザーアカウントの個人用領域にインストールされます。
クライアント証明書はルートCAによって直接署名され、前述のとおり、両方とも有効です。チェーンには他の証明書はなく、[信頼されたルート機関]エリアには中間証明書はありません。
IIS構成にはsslFlags = SslNegotiateCertおよびiisClientCertificateMappingAuthenticationが有効になっています。
サーバーはCTLを送信するように構成されておらず、SendTrustedIssuerList = 0です。
クライアント証明書が信頼されるべきではない理由がわかりません。
Windows 2012では、より厳密な証明書ストア検証が導入されました。 KB 2795828:Windows Server 2012でLync Server 2013フロントエンドサービスを開始できない によると、信頼されたルート証明機関(つまりルート)ストアは自己署名証明書のみを持つことができます。そのストアに非自己署名証明書が含まれる場合、IIS=の下のクライアント証明書認証は403.16エラーコードで返されます。
この問題を解決するには、ルートストアからすべての非自己署名証明書を削除する必要があります。次のPowerShellコマンドは、非自己署名証明書を識別します。
Get-Childitem cert:\LocalMachine\root -Recurse |
Where-Object {$_.Issuer -ne $_.Subject}
私の状況では、これらの非自己署名証明書を中間認証局(CA)ストアに移動しました:
Get-Childitem cert:\LocalMachine\root -Recurse |
Where-Object {$_.Issuer -ne $_.Subject} |
Move-Item -Destination Cert:\LocalMachine\CA
KB 2801679:KB 931125のインストール後のSSL/TLS通信の問題 によると、信頼できる証明書が多すぎる可能性もあります。
[T] Schannelセキュリティパッケージがサポートする信頼できる認証局リストの最大サイズは16キロバイト(KB)です。サードパーティのルート認証局が大量にあると、16kの制限を超えてしまい、TLS/SSL通信の問題が発生します。
この状況での解決策は、信頼できない証明機関の証明書を削除するか、または HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\@SendTrustedIssuerList
レジストリエントリを0に設定して信頼できる証明機関のリストの送信を停止する (デフォルト、存在しない場合は1)。
私の場合、ルート証明書をサーバーの「現在のユーザー」証明書ストアに追加していたので、403.16エラーが発生していました。
ローカルマシンの信頼されたルート機関ストアにルート証明書を追加すると、問題が解決しました。
IISを実行しているサーバーで次の手順を実行します。
Windows Server 2008 R2の場合:
Windows Server 2012 R2の場合:
Windows 7の場合:
IIS Expressでこのエラーが発生しました:
HTTPエラー403.16-禁止
クライアント証明書が信頼されていないか、無効です。
TraceLogFiles
を見ると、次のエラーが表示されました。
<RenderingInfo Culture="en-US">
<Opcode>MODULE_SET_RESPONSE_ERROR_STATUS</Opcode>
<Keywords>
<Keyword>RequestNotifications</Keyword>
</Keywords>
<freb:Description Data="Notification">BEGIN_REQUEST</freb:Description>
<freb:Description Data="ErrorCode">A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
(0x800b0109)</freb:Description>
</RenderingInfo>
Razer Synapse
をインストールすると、chromasdk.io
の証明書も[コンピューターアカウント]-> [ローカルコンピューター]の[信頼されたルート証明機関]に配置されました。これを削除すると、すべてが機能しました。