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

“对等方未经过身份验证”SSL证书错误usng DefaultHttpClient

戚澄邈
2023-03-14

我有一个应用程序jar,我正在使用DefaultHTTPClient类对象调用HTTPS url,但它给出的对等体不是authenticate异常,所以我想使用Keystore对jar进行签名。

根据@Duncan,我可以通过引用这个链接导入JVM中的。cer文件…我使用belloed命令将.cer导入到cacerts中

C:\program files\java\jre7\bin>keytool-importcert-alias esbcert-file“e:\desktop\esbcert\esb.cer”-keystore“c:\program files\java\jre7\lib\security\cacerts”-storePass changeit

在此之后,我输入“Y”以信任证书

信任此证书?[否]:已将y证书添加到密钥库

之后,我运行我的应用程序,但它仍然给我javax.net.ssl.sslpeerunverifiedexception:peer not authenticated

堆栈如下:

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
        at sun.security.ssl.SSLSessionImpl.getPeerCertificates(Unknown Source)
        at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.jav
a:126)
        at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFact
ory.java:572)
        at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnect
ion(DefaultClientConnectionOperator.java:180)
        at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedCli
entConnectionImpl.java:294)
        at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(Default
RequestDirector.java:645)
        at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultReq
uestDirector.java:480)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpCl
ient.java:906)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpCl
ient.java:805)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpCl
ient.java:784)
        at testhttps.TestHTTPS.testWithMKCLHTTPClient(TestHTTPS.java:95)
        at testhttps.TestHTTPS.main(TestHTTPS.java:49)

我的代码是:

String url = "https://domain.org/webapp/transformer/doTransformer/doReg";
try {


    HttpPost postRequest = new HttpPost(url);       
    HttpResponse httpResponse = null;

    DefaultHttpClient httpClient = new DefaultHttpClient();     
    httpResponse = httpClient.execute(postRequest);             
} catch (Exception e) {         
    e.printStackTrace();
}

共有1个答案

闾丘炫明
2023-03-14

此异常表明与服务器URL建立的连接不是来自经过身份验证的客户端。为了解决这个问题,我们必须在JRE中导入服务器的公共证书,运行java应用程序来导入证书,请遵循以下步骤:

根据@Duncan(评论),我可以通过引用这个链接导入JVM中的.cer文件…我使用belloed命令将.cer导入到cacerts中

C:\program files\java\jre7\bin>keytool-importcert-alias esbcert-file“e:\desktop\esbcert\esb.cer”-keystore“c:\program files\java\jre7\lib\security\cacerts”-storePass changeit

在此之后,我输入“Y”以信任证书

信任这个证书?[否]:已将y证书添加到密钥库

 类似资料:
  • 再说一遍,SSLPeerunverificed的沉闷问题,但我没有使用自签名证书。我尝试使用HTTPS连接到主机。此主机具有正确的证书,Firefox和HttpsUrlConnection都没有任何问题。然而,在尝试使用HttpClient进行连接时,我遇到了可怕的异常。 有线索吗?还是小费在哪里看得更近? 谢了!

  • 我想在我的工作电脑上安装竹代理。我已经下载了jar文件,并尝试使用以下语法运行它 我得到错误javax.net.ssl.sslpeerunverifiedException:peer未经过身份验证。 这个错误的来源对我来说是清楚的--我们有一个自签名的SSL Sertificate。我尝试使用以下参数运行 但它并不起作用。 我尝试使用这个链接添加证书Java keytool从URL/端口添加服务器

  • 我有Geo Trust签署的https证书。所有浏览器打开我的网站非常好。我的应用程序通过https授权,大多数时候一切都好。但有时用户无法连接并出现错误: 上一个用户拥有Windows7x86和Java1.7_45u。它发生在随机的OSs和随机的java更新上,我不知道原因。有时它不会发生,但通常如果用户有这样的错误没有帮助。 我不能添加证书到用户的密钥,因为这是用户应用程序。 目标url是au

  • 当我想要在cPanel上安装证书时,我会看到以下错误: 错误证书验证失败! 已执行/usr/bin/openssl verify-capath/var/cpanel/ssl/installed/cabundles: stdin:CN=example.com 0深度查找时错误20:无法获取本地颁发者证书

  • 我有一个服务,它公开了一个API我想测试。我在localhost上运行该服务,它有一个自签名证书。 我将。p12文件添加到test/resources和: 还增加了这个: restassured.config().sslconfig(sslconfig.sslconfig().AllowAllHostNames()); 但是,我得到以下错误: javax.net.ssl.sslpeerunveri