不要感到惊讶,但我的问题不是关于不起作用的问题:为什么 .Net WebClient 能够在没有任何配置的情况下使用开箱即用的 HTTPS?
如果我没有一些严肃的理由认为不应该是这样的话,我不会问:事实上,我已经使用 Apache HttpClient 执行完全相同的操作,通过 HTTPS 进行 POST,但它提示了。
令 HttpClient 烦恼的是服务器 TLS 证书未知。 这是一个合法的投诉,因此我已将证书添加到我正在使用的 JRE 证书存储中,之后一切都按预期工作。
首先,您能否消除一个可怕的疑问:WebClient 正确使用 HTTPS,如果我尝试连接到“https://downloadspywaresandmalwares.com”,它应该拒绝我,并显示“你疯了吗,伙计,这不是一个受信任的位置!”?
所以我猜这与 .Net 和 Java 不同的安全策略有关:也许 Java 与其自己的一组证书和权限捆绑在一起,而 .Net 与操作系统的集成度更高,操作系统可能拥有更多的可信证书证书。
那么我如何检查所有这些假设呢?
如果它有任何重要性:我使用过 Chrome 中的网站,但从未使用过 IE 中的网站,因此 WebClient 不使用 IE 配置。
感谢您的任何意见。 :)
最佳答案
好吧,我想我终于明白了:
- 正如我所怀疑的.Net没有自己的证书存储但使用操作系统存储
- 我已设法找到并删除该证书,但这并不容易,因为Windows 正在努力维护其存储中的某些证书
- 一旦删除,正如预期的那样,WebClient 就会损坏并发出提示,因为它“无法为 SSL/TLS 安全通道建立信任关系”
- 所以,是的,WebClient 正确使用了 SSL,这让我松了一口气:)
希望这些信息对其他人有用......
关于java - 为什么.Net WebClient无需任何配置就能使用HTTPS,而Java HttpClient却不能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16922752/