Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ 如果可以';无法在Windows中获取私钥?_Visual C++_Ssl_Encryption_Https_Openssl - Fatal编程技术网

Visual c++ 如果可以';无法在Windows中获取私钥?

Visual c++ 如果可以';无法在Windows中获取私钥?,visual-c++,ssl,encryption,https,openssl,Visual C++,Ssl,Encryption,Https,Openssl,我很困惑。我的英语很差,但我尽量把问题说清楚。当浏览器连接到需要客户端证书来验证身份的https网站时,浏览器将向web服务器发送客户端证书。然后web服务器将使用证书加密某些数据并将其发送到浏览器。那么broswer应该有私钥来解密。但正如我所知,如果我安装了pfx格式的个人证书,我可以设置不能导出私钥,这意味着你无法获得私钥来使用它。那么,浏览器如何在没有私钥的情况下解密数据呢?“不可导出”并不意味着“不可用”。您可以使用CryptoAPI函数使用私钥进行签名和解密 在侧节点上,如果需要,可

我很困惑。我的英语很差,但我尽量把问题说清楚。当浏览器连接到需要客户端证书来验证身份的https网站时,浏览器将向web服务器发送客户端证书。然后web服务器将使用证书加密某些数据并将其发送到浏览器。那么broswer应该有私钥来解密。但正如我所知,如果我安装了pfx格式的个人证书,我可以设置不能导出私钥,这意味着你无法获得私钥来使用它。那么,浏览器如何在没有私钥的情况下解密数据呢?

“不可导出”并不意味着“不可用”。您可以使用CryptoAPI函数使用私钥进行签名和解密


在侧节点上,如果需要,可以导入PFX文件并将私钥设置为可导出

谢谢你的回答!我认为私钥应该设置为不可移植,以确保安全。你的意思是我们可以使用CryptoAPI在没有私钥的情况下解密数据吗?我搜索了一些信息,找到了一个叫做CSP的东西,它保存了私钥。所以,如果我们想要解密数据,我们只需要调用CSP提供的一些接口支持?例如加密解密消息(…)?这就是你的意思“可用”@lvshuschengyin没有私钥你无法解密数据。但由于私钥在导入后存在于Windows中,对CryptoAPI函数(如CryptoDecryptMessage)的调用将使用存储的私钥。“对CryptoAPI函数(如CryptoDecryptMessage)的调用将使用存储的私钥。”这意味着我们只调用CryptoAPI函数(如CryptoDecryptMessage),它会自动寻找私钥来解密数据吗?windows将安全地保存私钥,没有人可以获取它。如果这是对SSL中发生的情况的描述,那么它是不正确的。私钥不用于解密。这是通过协商的对称会话密钥完成的。私钥和证书仅用于身份验证目的。@EJP是的,我的意思是在身份验证握手中,客户端的证书私钥应用于解密服务器的随机数数据以进行身份验证。