`
bewithme
  • 浏览: 428425 次
  • 性别: 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以下的设备,...

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

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

    java.net.SocketException Connection reset 解决方法

    "java.net.SocketException Connection reset 解决方法" 在 Java 编程中,SocketException 是一种常见的异常,特别是在网络编程中。Conexion reset by peer 是一种特殊的 SocketException,它发生在客户端和服务器...

    System.Net.Http.dll

    9. **安全性**:`HttpClient`支持HTTPS通信,并且可以配置证书验证和SSL/TLS协议版本,确保数据传输的安全性。 10. **自定义处理程序**:除了默认的`HttpClientHandler`,用户还可以创建自定义的处理程序,以满足...

    System.Net.Http.dll下载

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

    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`方法的问题,提升开发效率。

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

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

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

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

    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的核心库...

    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(); ``` 这段代码创建了...

    HttpClient包及例子

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

    httpclient-4.5.13-API文档-中文版.zip

    赠送jar包:httpclient-4.5.13.jar; 赠送原API文档:httpclient-4.5.13-javadoc.jar; 赠送源代码:httpclient-4.5.13-sources.jar; 赠送Maven依赖信息文件:httpclient-4.5.13.pom; 包含翻译后的API文档:...

    (完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc

    "JAVA利用HttpClient进行POST请求(HTTPS)" JAVA HttpClient是Apache软件基金会提供的一个开源实现HTTP客户端的Java库,能够帮助开发者轻松地与HTTP服务器进行交互。在实际项目中,我们经常需要使用HttpClient来发送...

    java.net.URLConnection发送HTTP请求与通过Apache HttpClient发送HTTP请求比较

    `java.net.URLConnection`是Java标准库中的一个类,可以直接访问URL并建立连接。使用URLConnection的优点在于它内置于JDK,无需额外引入依赖,代码简洁。下面是一个简单的示例: ```java URL url = new URL(...

Global site tag (gtag.js) - Google Analytics