`
bewithme
  • 浏览: 429990 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

解决httpclient访问自签名https报javax.net.ssl.SSLHandshakeException: sun.security.validat

 
阅读更多

     先检查java环境变量

 

  

    JAVA_HOME

    JRE_HOME

    Path加上 %JAVA_HOME%\bin;%JRE_HOME%\bin

 

 

 

      如果你构建了一个https协议的站点,而此站点的安全证书并不是合法的第三方证书颁发机构所签发,那么你用httpclient去访问此站点会报如下错误

 

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

 

产生原因是jdk的证书库里并没有将该站点的证书作为受信任的安全证书。

 

解决方法是导该站点的证书,将此证书导入到java的信任证书库中。

 

要注意的是,在win7或更高的系统中,运行一定要以管理员身份运行CMD,Mac os 要用sudo -i 命令切换为 root用户,否则会报以下错

keytool错误: java.io.FileNotFoundException: 

 

把证书导入java的cacerts证书库的步骤:

第一步:IE打开网站,把要导入java证书库的证书下载
        在该网页安全警报弹出窗口上查看证书--详细信息--复制到文件
        会弹出一个证书导出向导对话框,按提示一直下一步直到完成。
        我把证书保存在C盘,名字为NEXT_CertKey.cer 或是 xxxx.der。

第二步:将上面导出的证书导入java中的cacerts证书库
        windows  cmd进入C:\Program Files\Java\jdk1.5.0_06\bin 目录

  
        敲入如下命令回车执行
        keytool -import -alias cacerts -keystore  C:\Program Files\Java\jdk1.5.0_06\jre\lib\security\cacerts -file C:\NEXT_CertKey.cer -trustcacerts
        此时命令行会提示你输入cacerts证书库密码,
        java中cacerts证书库默认密码为changeit,
        Y确认即可,OK,认证已添加至keystore。

 
keytool -delete -alias changanfordclub -keystore cacerts  -storepass changeit
 
 mac os 终端进入 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/security

 

sudo keytool -import -alias cacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/security/cacerts -file /Users/xuwenfeng/Desktop/RuckusWirelessZoneDirectorSN-491508001359 -trustcacerts

如果您觉得我的文章给了您帮助,请为我买一杯饮料吧!以下是我的支付宝,意思一下我将非常感激!
 
0
2
分享到:
评论

相关推荐

    javax.net.ssl.SSLHandshakeException: sun.security.validator 问题解决,与环境有关

    在Java编程中,`javax.net.ssl.SSLHandshakeException` 是一个常见的错误,通常发生在进行安全套接层(SSL)或传输层安全(TLS)协议握手时出现问题。这个异常通常是由于客户端和服务器之间的证书不匹配、信任锚点...

    https解决SSLHandshakeException问题.zip

    HTTPS(Hypertext Transfer Protocol Secure)是一种基于HTTP的安全协议,它通过SSL/TLS(Secure Sockets Layer/Transport Layer Security)来加密通信,以确保数据传输的安全性。然而,对于Android 5.0以下的设备,...

    System.Net.Http.dll下载

    在实际开发中,为了管理`HttpClient`对象,我们通常会采用依赖注入或者单例模式,避免频繁创建和销毁`HttpClient`实例,因为这可能导致过多的TCP连接创建,从而影响性能。 总的来说,`System.Net.Http.dll`是C#进行...

    web爬虫WebMagic-0.7.3源代码及示例

    它通常使用HTTP客户端库(如Apache HttpClient或OkHttp)来发送请求并接收响应。 2. **Site**:配置爬虫的站点信息,如基础URL、编码格式、延迟时间等,帮助爬虫更好地遵循网站的Robots协议。 3. **PageProcessor*...

    httpclient4.5 绕过ssl认证文件访问

    但有时在测试或特定场景下,我们可能需要绕过这一验证,例如自签名证书的服务器或开发环境。 HTTPClient 4.5中提供了这样的功能,可以让我们自定义SSL上下文,从而绕过默认的证书验证。以下是如何操作的步骤: 1. ...

    Java中Httpclient需要的jar包(httpclient.jar,httpcore.jar及commons-logging.jar)

    在标题和描述中提到的"Java中Httpclient需要的jar包(httpclient.jar,httpcore.jar及commons-logging.jar)",是使用HttpClient库时必须包含的三个关键依赖文件。 首先,`httpclient.jar`是Apache HttpClient的核心库...

    System.Net.Http.dll

    C#使用HttpClient需要 using System.Net.Http; 但是Windows系统里面好像又没有自带相应的dll文件,这是这个命名空间的System.Net.Http.dll。 编译的时候 csc /r:System.Net.Http.dll HttpClientTest.cs 这样使用。

    java 发送https 请求 证书

    3. **在Java代码中配置TrustStore**:在Java代码中,你需要设置`javax.net.ssl.trustStore`和`javax.net.ssl.trustStorePassword`系统属性,指向你的TrustStore文件和密码: ```java System.setProperty("javax...

    system.net.http.dll

    5. **HttpClientFactory**:自.NET Core 2.1起,`HttpClientFactory`引入了更有效的管理策略,解决了长时间运行应用程序中可能出现的连接泄漏问题。通过依赖注入,开发者可以方便地创建和配置`HttpClient`实例,同时...

    System.Net.Http.Formatting各版本.zip

    在.NET框架中,`System.Net.Http.Formatting`是一个关键的组件,主要用于处理HTTP客户端的输入和输出数据格式化。...通过这个压缩包,开发者可以快速解决`HttpClient`缺少`PostAsJsonAsync`方法的问题,提升开发效率。

    JAVA HTTP 发送 接收 com.sun.net.httpserver包 demo

    在Java中,我们可以使用多种库来实现HTTP通信,其中包括`com.sun.net.httpserver`包,这是一个内置的轻量级HTTP服务器,适用于测试、原型设计以及简单的应用。本示例将详细介绍如何使用`com.sun.net.httpserver`包...

    java调用net开发的webservice实例

    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396) at org.codehaus.xfire.transport.http.CommonsHttpMessageSender.send(CommonsHttpMessageSender.java:369) at org.codehaus....

    可用org.apache.commons.httpclient-3.1.0.jar.zip

    import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods....

    System.Net.Http.dll.rar

    HttpClient client = new HttpClient(); HttpResponseMessage response = await client.GetAsync("http://example.com"); string responseBody = await response.Content.ReadAsStringAsync(); ``` 这段代码创建了...

    java17 https 忽略ssl认证, httpclient5 ,springboot3.2.7 脚手架

    springboot3.2.7 基于java17 ,测试https 接口,基于 RestTemplate 实现

    httpClient实例httpClient调用 http/https实例 忽略SSL验证

    这个实例主要涉及如何配置HttpClient来忽略SSL(Secure Socket Layer)验证,这对于在开发和测试环境中处理自签名证书或未认证的服务器非常有用。以下将详细介绍HttpClient的使用以及如何进行SSL验证的忽略。 首先...

    HttpClient包及例子

    CloseableHttpResponse response = httpClient.execute(httpGet); try { System.out.println(response.getStatusLine()); HttpEntity entity = response.getEntity(); EntityUtils.consume(entity); } finally { ...

Global site tag (gtag.js) - Google Analytics