我已经写了一个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)的警告。
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;
}如何发现这个问题的来源?我只能输出铬日志。
发布于 2019-08-30 13:51:50
Chrome并不将Microsoft (CryptoAPI)用于加密服务,但它包含了BoringSSL库。因此,Chrome将无法访问您的定制CSP模块。
您应该能够导入客户端证书和私钥(设置、->、高级->、隐私和安全、->管理证书、->个人->导入)。
您没有解释为什么要使用IE使用自定义CSP,因为将cert和私钥导入窗口的证书存储区也会使ssl客户端证书在没有它的情况下工作。HTH。
https://stackoverflow.com/questions/57688134
复制相似问题