首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用自定义密码服务提供者(CSP)在Chrome上进行SSL/TLS客户端身份验证

如何使用自定义密码服务提供者(CSP)在Chrome上进行SSL/TLS客户端身份验证
EN

Stack Overflow用户
提问于 2019-08-28 08:33:27
回答 1查看 1.9K关注 0票数 1

我已经写了一个CSP模块,它运行得很好。这里有一个问题,我使用我的CSP模块浏览器到一个需要ssl客户端身份验证的网页,它在IE上工作,但不适用于Chrome。Chrome屏幕显示错误本网站无法提供安全连接

我在启用日志时使用chrome,并出现类似于WARNING:ssl_platform_key_win.cc(386)] Could not acquire private key: Error (0x13D) while retrieving error. (0xC0000225)的警告。

代码语言:javascript
复制
HCERTSTORE hStore = NULL;
CRYPT_KEY_PROV_INFO key_prov_info = { 0 };
PCCERT_CONTEXT pCertContext = nullptr;
std::vector<BYTE> der_encoded_cert;

hStore = CertOpenSystemStore(NULL, L"MY");
if (!hStore)
{
    goto Exit;
}

der_encoded_cert = LoadFromFile();

pCertContext = CertCreateCertificateContext(X509_ASN_ENCODING, der_encoded_cert.data(), der_encoded_cert.size());
if (!pCertContext)
{
    goto Exit;
}

key_prov_info.dwProvType = MY_PROVIDER_TYPE; // Or YOUR_PROVIDER_TYPE
key_prov_info.dwKeySpec = AT_SIGNATURE; // Or AT_KEYEXCHANGE
key_prov_info.pwszContainerName = L"My key name";
key_prov_info.dwFlags = CERT_SET_KEY_PROV_HANDLE_PROP_ID;
key_prov_info.cProvParam = L"My provider Name";
key_prov_info.pwszProvName = nullptr;
key_prov_info.rgProvParam = 0;


if (!CertSetCertificateContextProperty(pCertContext, CERT_KEY_PROV_INFO_PROP_ID, 0, &key_prov_info))
{
    goto Exit;
}

if (!CertAddCertificateContextToStore(hStore, pCertContext, CERT_STORE_ADD_ALWAYS, NULL))
{
    goto Exit;
}

如何发现这个问题的来源?我只能输出铬日志。

EN

回答 1

Stack Overflow用户

发布于 2019-08-30 13:51:50

Chrome并不将Microsoft (CryptoAPI)用于加密服务,但它包含了BoringSSL库。因此,Chrome将无法访问您的定制CSP模块。

您应该能够导入客户端证书和私钥(设置、->、高级->、隐私和安全、->管理证书、->个人->导入)。

您没有解释为什么要使用IE使用自定义CSP,因为将cert和私钥导入窗口的证书存储区也会使ssl客户端证书在没有它的情况下工作。HTH。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57688134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档