轻松把玩HttpClient之配置ssl,采用设置信任自签名证书实现https

本文介绍如何使用HttpClient配置SSL,以信任自签名证书,从而实现在HTTPS环境下的正常通信。针对遇到证书未通过CA认证或自签名证书的情况,提供了加载密钥库并设置密码的代码示例。
摘要由CSDN通过智能技术生成

在上篇文章《HttpClient配置ssl实现https简单示例——绕过证书验证》中简单分享了一下如何绕过证书验证。如果你想用httpclient访问一个网站,但是对方的证书没有通过ca认证或者其他问题导致证书不被信任,比如12306的证书就是这样的。所以对于这样的情况,你只能是选择绕过证书验证的方案了。

但是,如果是自己用jdk或者其他工具生成的证书,还是希望用其他方式认证自签名的证书,这篇文章就来分享一下如何设置信任自签名的证书。当然你也可以参考官网示例中。

要想信任自签名的证书,必须得知道密钥库的路径及密钥库的密码。然后加载到程序来才可以。具体代码如下:

	/**
	 * 设置信任自签名证书
	 * 	
	 * @pa
  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Java 的 HttpClient 在发送 HTTPS 请求时,需要验证服务端返回的证书,以确保请求发送到正确的服务器,并且通信过程中的数据不会被中间人篡改。如果使用的是 CA 颁发的证书,那么该证书是受信任的,HttpClient 可以直接从本地系统的受信任证书存储中获取证书链并进行验证;如果使用的是自签名证书,则需要手动添加信任,否则 HttpClient 会拒绝连接并抛出 SSLException 异常。 可以通过以下两种方式之一来让 HttpClient 信任签名证书: 1. 将证书导入到本地系统的受信任证书存储中。这样 HttpClient 就可以从证书存储中获取证书链并进行验证。可以使用 Java Keytool 工具来导入证书,具体操作请参考 Java Keytool 的文档。 2. 自定义 SSL 上下文并忽略证书验证错误。这种方式不建议在生产环境中使用,因为它会降低通信的安全性。可以使用以下代码来创建自定义 SSL 上下文: ```java SSLContext sslContext = SSLContexts.custom() .loadTrustMaterial(trustStore, new TrustSelfSignedStrategy()) .build(); ``` 其中,`trustStore` 是包含自签名证书的 KeyStore 对象,`TrustSelfSignedStrategy` 是一个信任签名证书的策略。 然后,可以使用以下代码创建 HttpClient 对象并设置 SSL 上下文: ```java CloseableHttpClient httpClient = HttpClients.custom() .setSSLContext(sslContext) .build(); ``` 这样,HttpClient 就可以使用自定义的 SSL 上下文来发送 HTTPS 请求,并忽略证书验证错误。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值