双向SSL-客户端证书未发送到服务器

双向SSL-客户端证书未发送到服务器,ssl,wireshark,visualforce,client-certificates,force.com,Ssl,Wireshark,Visualforce,Client Certificates,Force.com,我正在force.com平台上为salesforce部署一个应用程序, 我正试图为其配置双向SSL 即。 我希望对于从SF发送到我的服务器的每个请求,都会发送一个客户端证书 我在SF上进行了必要的配置,以便发送证书,但我仍然从服务器获得403.7,这意味着:禁止,需要客户端证书 我在服务器上安装了wireshark,捕获了流量以查看双向ssl握手,我试图在服务器hello消息中找到,它告诉客户机客户端证书应该对应的可信CA,但我很难找到它。 我怀疑这就是客户机不发送证书的原因 有人能告诉我在服务

我正在force.com平台上为salesforce部署一个应用程序, 我正试图为其配置双向SSL

即。 我希望对于从SF发送到我的服务器的每个请求,都会发送一个客户端证书

我在SF上进行了必要的配置,以便发送证书,但我仍然从服务器获得403.7,这意味着:禁止,需要客户端证书

我在服务器上安装了wireshark,捕获了流量以查看双向ssl握手,我试图在服务器hello消息中找到,它告诉客户机客户端证书应该对应的可信CA,但我很难找到它。 我怀疑这就是客户机不发送证书的原因

有人能告诉我在服务器的什么地方吗?或者在另一个包捕获中

提前谢谢

客户端密钥交换记录:


添加了握手截图。你能告诉我应该去哪里吗


见第31包。它包含证书请求。另外,数据包33包含来自客户端的证书,因此原因不是客户端不发送证书,而是服务器不喜欢证书,因为验证失败,或者证书不足以作为对请求资源的授权。您可以从服务器日志中获得更多信息。

此处,服务器发送其证书请求消息,客户端发送其证书消息作为响应,但该消息包含0个证书

通常,当客户端无法选择要使用的客户端证书时,会发生这种情况。它没有正确配置以使用任何证书,或者找不到由一个可接受的CA颁发的证书

查看证书请求包并检查其证书颁发机构列表。这是服务器愿意接受的CA可分辨名称DNs的列表

无论如何,客户机将需要找到一个客户机证书,通过该证书可以构建指向这些DNs的链。在最简单的情况下,可以使用由这样的DN颁发的客户端证书。否则,客户端可能必须构建一个从客户端证书到这样一个DN的链,它需要有必要的中间CA证书才能这样做。如何做到这一点取决于客户端的配置机制


如果中间CA证书是必需的,但在客户端不可用,则您可能需要配置服务器以接受它们,并在证书请求中公布它们。

不确定这是否会帮助其他人,但对于我们的问题,在Visual Studio和IIS中本地运行时,一切正常,但当部署到真正的服务器时,我们在双向SSL期间遇到了证书问题,如上所述,并在Wireshark中进行了验证

无论如何,在那台服务器上,我们还有一个.NET4.7.2控制台应用程序,它调用了相同的API,一切正常

但是,我们的.NET4.7.2WebAPI调用失败了。似乎当相同的代码在IIS内运行时,SSL协商期间证书不可用。虽然装得很好

此时,我们的解决方案是修改以下调用以包含第3个参数

certificate = new X509Certificate2(certificatepath, Password, X509KeyStorageFlags.MachineKeySet); 默认情况下,X509Certificate2使用UserKeySet选项,因此可能应用程序池用户或IIS中的另一个线程在访问证书进行协商时遇到问题

以下是我在研究过程中发现的一些有用的相关页面:


查找来自服务器的证书请求消息。如果没有,客户端将不发送任何证书。另请参见。添加了握手捕获的屏幕截图。你能告诉我应该在哪里看吗?请看我添加的附加屏幕截图,指的是客户端密钥交换。它显示证书长度为0,这就是为什么我假设这是一条证书消息,但证书不包含在其中。我错了吗?谢谢,在《握手协议》下的记录31中找到了我想要的东西names@Y.S,你能告诉我你是如何解决这个问题的吗?我也面临同样的问题。我正在使用openSSL和pem格式的自签名证书。但是我得到了以下错误。SSL_CTX_use_certificate_文件失败[0,错误:0906D06C:PEM例程:PEM_read_bio:no start line]@scooby:您的问题与此无关。如果你需要帮助,问一个新问题。提示:您的证书文件没有预期的格式。如果服务器的证书请求中没有证书颁发机构列表,该怎么办?我在亚马逊AWS物联网方面遇到问题。他们甚至不发布任何CA或客户端证书的中间证书。我们也遇到了同样的问题。如上所述,证书长度为零。有w吗
是否强制将客户端证书发送到服务器?此证书请求是否仅以双向SSL发送?还是也采用单向SSL?谢谢