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

SSLPeerunVerifiedException:未使用有效证书对等方进行身份验证

雍嘉勋
2023-03-14

我有Geo Trust签署的https证书。所有浏览器打开我的网站非常好。我的应用程序通过https授权,大多数时候一切都好。但有时用户无法连接并出现错误:

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at sun.security.ssl.SSLSessionImpl.getPeerCertificates(Unknown Source)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:126)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:572)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:645)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:480)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
at org.greencubes.downloader.Downloader.downloadFile(Unknown Source)
at org.greencubes.lil.Launcher.<init>(Unknown Source)
at org.greencubes.lil.Launcher.main(Unknown Source)

上一个用户拥有Windows7x86和Java1.7_45u。它发生在随机的OSs和随机的java更新上,我不知道原因。有时它不会发生,但通常如果用户有这样的错误没有帮助。

我不能添加证书到用户的密钥,因为这是用户应用程序。

目标url是auth.greencubes.org(空响应必须返回403),您可以检查它。

共有1个答案

哈雅珺
2023-03-14

所以,我在我的一个用户的帮助下发现了一个问题。问题在于卡巴斯基防病毒软件(也可能是其他一些防病毒软件/防火墙,ESET NOD可能是)通过替换SSL证书来检查加密连接,默认的java keystore没有卡巴斯基CA证书(因为它是在安装防病毒软件时生成的)。

第一个解决方案是完全禁用检查加密连接或检查连接(Web防病毒功能)或禁用防病毒。

正确的解决方案是尝试使用Windows的KeyStore,其中antivirus的CA证书是由antivirus本身添加的。可以通过设置JVM参数来完成:

-Djavax.net.ssl.trustStoreType=Windows-ROOT

或者在应用程序启动时执行此代码(最好是在main()函数中):

System.setProperty("javax.net.ssl.trustStoreType", "Windows-ROOT");

您只需要确保它是windows系统,所以命令行参数不是通用解决方案。

此代码可用于确保windows密钥存储区存在且有效:

if(System.getProperty("os.name").toLowerCase().contains("windows")) {
    try {
        KeyStore ks = KeyStore.getInstance("Windows-ROOT");
        ks.load(null, null);
        System.setProperty("javax.net.ssl.trustStoreType", "Windows-ROOT");
    } catch(Exception e) {
        // Ignore: windows keystore is bad, left default
    }
}
 类似资料:
  • 再说一遍,SSLPeerunverificed的沉闷问题,但我没有使用自签名证书。我尝试使用HTTPS连接到主机。此主机具有正确的证书,Firefox和HttpsUrlConnection都没有任何问题。然而,在尝试使用HttpClient进行连接时,我遇到了可怕的异常。 有线索吗?还是小费在哪里看得更近? 谢了!

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

  • 我在Linux上使用android Studio,然后从git导入了我的项目(它是从windows推送的)。但是由于某种未知的原因,IDE抛出了以下错误: [496677]警告-拉德尔。项目ProjectSetUpTask-[658549]警告-nal。AbstractExternalSystemTask-原因:对等方未通过com身份验证。intellij。openapi。外部系统。模型Exter

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

  • 我有一个应用程序jar,我正在使用DefaultHTTPClient类对象调用HTTPS url,但它给出的对等体不是authenticate异常,所以我想使用Keystore对jar进行签名。 根据@Duncan,我可以通过引用这个链接导入JVM中的。cer文件…我使用belloed命令将.cer导入到cacerts中 在此之后,我输入“Y”以信任证书 之后,我运行我的应用程序,但它仍然给我 堆

  • 问题内容: 我需要导入证书,以便向Spring Boot应用程序中的外部服务发出http请求。 我该如何设置Spring Boot来做到这一点? 那里有很多信息,但我发现所有这些都令人困惑。似乎我可能只需要创建类似“ truststore.jks”密钥库的内容并导入正确的证书,然后将一些条目添加到我的application.properties中即可。 问题答案: 打开您的终端或 回答所有问题。在