当前位置: 首页 > 知识库问答 >
问题:

使用HttpClient允许不受信任的SSL证书

督翰学
2023-03-14

似乎HttpClient/HttpClientHandler没有提供忽略不信任证书的选项,比如WebRequest使您能够忽略不信任证书(尽管使用ServerCertificateValidationCallback)。

任何帮助都将不胜感激!

共有1个答案

狄法
2023-03-14

一个快速而肮脏的解决方案是使用ServicePointManager.ServerCertificateValidationCallback委托。这允许您提供自己的证书验证。验证是在整个应用程序域中全局应用的。

ServicePointManager.ServerCertificateValidationCallback +=
    (sender, cert, chain, sslPolicyErrors) => true;

我主要在以下情况下使用它进行单元测试:我希望在进程中托管的endpoint上运行,并试图使用WCF客户端或HttpClient对其进行访问。

对于生产代码,您可能需要更细粒度的控制,最好使用WebRequestHandler及其ServerCertificateValidationCallback委托属性(请参见下面DTB的回答)。或ctacke使用HttpClientHandler回答。我现在更喜欢这两个中的任何一个,即使是在我的集成测试中,也不喜欢我以前的做法,除非我找不到任何其他钩子。

 类似资料:
  • 问题内容: 我一直在研究从动态Web应用程序中提取信息的程序,该程序运行良好,直到我将tomcat服务器设置为使用具有自签名(因此,不受信任)证书的SSL。错误的堆栈跟踪为: 在Web浏览器中,当用户使用不受信任的证书访问HTTPS站点时,系统会提示用户警告,并要求他设置是否愿意继续进行操作;我想为我的命令行应用程序实现类似的功能…我承认我是套接字编程和网络领域的新手。解决这个问题的任何建议都会很

  • 问题内容: 我正在使用JavaFX开发一个简单的嵌入式浏览器: 当我用来加载任何http网站时,它可以正常工作: 尽管如此,如果我尝试使用不受信任的证书(我自己的ssl证书)加载网站,则无法正常工作,并且在浏览器中出现白屏。 有什么方法可以(自动)信任我的ssl证书? 问题答案: 最后,我解决了我的问题。您应该在加载网站之前添加以下代码: 注意: 此代码片段只是禁用证书验证,而不是信任它。

  • 我正在使用OpenSSL以避免为此付费。我的服务器正在运行IIS 8和Windows server 2012。 我创建证书的方式是: openssl请求-new-key cakey.pem-x509-days 1825-extensions v3_ca-out ca.crt 最后,我使用以下内容签署了证书请求: openssl x509-req-days 365-in certreq.txt-ca

  • 局域网IP地址怎么生成受信任的SSL证书?比如启明星辰的设备ip地址证书就是受信任的。

  • 为此,我使用以下命令将。cer文件导入到jks文件中。(密码和密码一样,提示要求接受证书,我给y,然后说证书加到keystore了) keytool-importcert-file xyz.cer-keystore test.jks-alias“testsp” 然后我使用这个jks文件创建凭据,如下所示。 谁能指导我解决这个问题吗?

  • 问题内容: 我的问题: 我想连接到可能使用Java默认情况下不信任的证书的服务器(不限于HTTPS协议-可以是LDAP-over- SSL,可以是SMTPS,可以是IMAPS等)。自签名)。 所需的工作流程是尝试连接,检索证书信息,将其提供给用户,如果他接受了,则将其添加到信任库中,以便将来继续受信任。 我被困于获取证书。我有从这里以及关于Java SSL问题的答案所指向的站点编写的代码(请参阅文