我們有一個現有的證書頒發應用程序(C#,ASP.NET,JavaScript),它向在IE中使用XenRoll的Windows XP用戶頒發證書。我需要擴展它以支持Windows Vista和Windows 7用戶,也使用IE。無法使用CertEnroll在Windows 7上安裝證書
對於Vista和7,Microsoft使用新的CertEnroll控件替換了XenRoll ActiveX控件1。我有在Vista SP2這個工作,但在我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>
現在,它是真實的根證書不被信任,但我打電話InstallResponse與第一參數設置爲4,即使根證書不受信任也應允許安裝。這在Vista中廣告,但在Windows 7似乎並沒有。
我測試過,如果根證書是可信的,它確實有效。我確信有人會這樣說,所以我會搶先一步 - 讓客戶信任根證書對我們來說不是一個真正的選擇(我們想要將客戶端身份驗證證書分發給客戶,作爲驗證它們的一部分在我們的網絡上)。
我在這裏做錯了什麼?其他人有沒有在Windows 7中工作?
我對ActiveX設置沒有問題 - 如果您通過HTTPS運行CertEnroll,您將無法獲得該設置。 – Cocowalla 2010-09-02 16:32:20
的確,我今天只是在一個簡單的HTTP測試服務器上運行它。 – Bruno 2010-09-02 16:36:34
我剛剛檢查過,它是第一個爲我工作的'enrollObj.InstallResponse(4,xmlHttpRequest.responseText,0,「」);'也許在初始化的其餘部分有其他內容。 (對不起,我現在不記得所有的細節。) – Bruno 2010-09-02 16:40:29