我有一个带有HTTPS绑定的IIS应用程序,它使用自签名证书。证书包含服务器主机名,IPv4地址和IPv6地址的DNS名称。我已在我的客户端计算机上的本地计算机的受信任的根证书颁发机构文件夹中安装了证书。使用Web浏览器,我可以使用主机名和两个IP地址连接到服务器,而不会出现证书错误。我还在编写一个需要连接到服务器的C#客户端应用程序。在应用程序的配置中,如果我指定主机名或IPv4地址,应用程序可以正常连接,但如果我指定IPv6地址,我会得到一个例外。最里面的消息是"The remote certificate is invalid according to the validation procedure."
。如果我将站点配置为接受HTTP请求,则客户端应用程序可以使用IPv6进行正常连接。
在使用IPv6地址时,我需要做什么让客户端应用程序信任我的证书?
编辑:如果它是相关的,我正在使用HttpClient的PostAsync方法提交请求。
答案 0 :(得分:1)
证书包含服务器主机名,IPv4地址和IPv6地址的DNS名称。
IPv4和IPv6地址不应作为DNS名称(键入dNSName)提供,而应作为主题备用名称扩展名中的类型iPAddress。但是,众所周知,MSIE会将此视为dNSName,尽管这是错误的,因此您应该将它们添加为dNSName和iPAddress。
如果仍无法与您的应用程序建立连接,则可能是C#中证书验证中的错误或您在URL中指定IPv6地址的方式(即预期的语法不同)。由于在证书中使用IP地址,特别是IPv6是一种不常见的情况,这可能不是在C#和TLS库中经过充分测试的。