【问题标题】:Error trying to install Certificate on browser using JS尝试使用 JS 在浏览器上安装证书时出错
【发布时间】:2020-02-12 09:57:09
【问题描述】:

在我的代码中,我有一个调用 JS 文件的按钮,该文件又调用一个 PHP 文件,该文件具有我需要生成证书的 API 端点,并将我在 certificate 中使用的响应发回strong> 下面的变量。

我正在使用 openssl 命令自己生成 CSR。

我在浏览器上安装证书的代码如下(证书是我传递证书作为我从 Entrust API 获得的响应的地方)-

我正在使用此页面上的代码-https://blogs.msdn.microsoft.com/alejacma/2009/01/28/how-to-create-a-certificate-request-with-certenroll-javascript/(正下方的第二个灰色块-以下 Javascript 示例显示了如何安装来自 CA 的响应

function installCertificate(certificate) {
    try {
        var objEnroll = objCertEnrollClassFactory.CreateObject("X509Enrollment.CX509Enrollment");
        objEnroll.Initialize(1); // ContextUser

        objEnroll.InstallResponse(0, certificate, 6, "");

    } catch (ex) {
        swal('Error', 'Something went wrong installing Client Certificate', 'error');
        console.log("exception- " + ex.description);
    }
}

我遇到的错误是(来自 catch 块)-

CertEnroll::CX509Enrollment::InstallResponse: Cannot find object or property. 0x80092004 (-2146885628 CRYPT_E_NOT_FOUND)

我不确定无法找到对象或属性是什么意思,因为它不太冗长。

PS:如果我将来自 API 的响应保存为 .crt 文件并打开它(只需双击),证书值和证书链看起来都是正确的。

【问题讨论】:

    标签: javascript ssl certificate certenroll


    【解决方案1】:

    经过大量的拖网搜索,我终于成功了。对于任何想知道的人,这是我的解决方案-

    生成 CSR 的代码部分是此页面上的第一个灰色块 - https://blogs.msdn.microsoft.com/alejacma/2009/01/28/how-to-create-a-certificate-request-with-certenroll-javascript.

    它返回的 CSR 在顶部有一个 -----BEGIN NEW CERTIFICATE REQUEST----------END NEW CERTIFICATE REQUEST- ---- 在底部,每行之后换行

    我使用 preg_replace 删除了顶行和所有换行符,如下所示,此时 CSR 没有换行符,只是一个简单的字符串,我使用 str_replace 删除了它的最后一部分。

    $csr = preg_replace('/^.+\n/', '', $csr);  
    $csr = str_replace("-----END NEW CERTIFICATE REQUEST-----","", $csr);
    

    TLDR- 从 CSR 中删除了顶线和底线以及那里的所有换行符。我认为这与 CSR 的格式有关。

    【讨论】:

      猜你喜欢
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 2016-09-14
      相关资源
      最近更新 更多