IEでXenRollを使用してWindowsXPユーザーに証明書を発行する既存の証明書発行アプリケーション(C#、ASP.NET、JavaScript)があります。これを拡張して、WindowsVistaおよびWindows7ユーザーをサポートし、IEも使用する必要があります。
Vistaおよび7の場合、MicrosoftはXenRollActiveXコントロールを新しいCertEnrollコントロールに置き換えました。これはVistaSP2で機能しますが、7ではインストール手順で次のエラーが発生します。
CertEnroll :: CX509Enrollment :: InstallResponse:証明書チェーンは処理されましたが、信頼プロバイダーによって信頼されていないルート証明書で終了しました。0x800b0109(-2146762487)
関連するHTMLとJavaScriptのスニペットは次のとおりです。
<object id="classFactoryObj" classid="clsid:884e2049-217d-11da-b2a4-000e7bbb2b09"></object>
<script type="text/javascript">
function InstallCert()
{
try
{
var classFactory = document.getElementById("classFactoryObj");
var objEnroll = classFactory.CreateObject("X509Enrollment.CX509Enrollment");
var signedCert = '-----BEGIN CERTIFICATE-----' +
'REMOVED FOR BREVITY' +
'-----END CERTIFICATE-----';
objEnroll.Initialize(1); // User context
objEnroll.InstallResponse(4, signedCert, 6, ""); // AllowUntrustedRoot = 4
alert('Certificate installed');
}
catch (ex)
{
alert('Unable to install certificate: ' + ex.description);
}
}
InstallCert();
</script>
これで、ルート証明書が信頼されていないのは事実ですが、最初のパラメーターを4に設定してInstallResponseを呼び出しています。これにより、ルート証明書が信頼されていない場合でもインストールが可能になります。これはVistaで宣伝されているように機能しますが、Windows7では機能しないようです。
テストしましたが、ルート証明書が信頼されている場合は機能します。誰かがそれを言うと確信しているので、私はそれを先取りします-クライアントにルート証明書を信頼させることは私たちにとって実際にはオプションではありません(私たちは顧客を認証する一環として、クライアント認証証明書を顧客に配布したいと思っています私たちのネットワーク上)。
私はここで何か間違ったことをしていますか?他の誰かがこれをWindows7で動作させましたか?