Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在TrustManager的checkServerTrusted()中获取CertPathValidatorResult?_Java_Ssl_X509certificate_Jsse_Httpsurlconnection - Fatal编程技术网

Java 如何在TrustManager的checkServerTrusted()中获取CertPathValidatorResult?

Java 如何在TrustManager的checkServerTrusted()中获取CertPathValidatorResult?,java,ssl,x509certificate,jsse,httpsurlconnection,Java,Ssl,X509certificate,Jsse,Httpsurlconnection,调用实现X509TrustManager的类的checkServerTrusted方法时,我需要获取与证书链相关的所有验证错误,包括 证书路径验证问题。e、 g不可信 证书字段验证问题。e、 g证书过期,扩展密钥使用无效 这背后的动机是,在用户像Firefox现在那样将证书验证问题作为“例外”添加之前,我可以向用户展示证书验证问题。但是,现在,一旦发现路径验证问题,就会抛出CertPathValidatorException,但它没有提供有关证书中字段有效性的信息。我如何实现这一点 经过阅读,我

调用实现
X509TrustManager
的类的
checkServerTrusted
方法时,我需要获取与证书链相关的所有验证错误,包括

  • 证书路径验证问题。e、 g不可信
  • 证书字段验证问题。e、 g证书过期,扩展密钥使用无效
  • 这背后的动机是,在用户像Firefox现在那样将证书验证问题作为“例外”添加之前,我可以向用户展示证书验证问题。但是,现在,一旦发现路径验证问题,就会抛出
    CertPathValidatorException
    ,但它没有提供有关证书中字段有效性的信息。我如何实现这一点


    经过阅读,我发现
    CertPath
    API提供了这样的功能,并且发现PKIX实现是围绕这一点的包装,但只是不返回
    CertPathValidatorResult
    。我希望在返回所有验证问题的同时,最大限度地利用现有的JAVA功能(无需将自己的自定义包装器写入API)

    如果出现证书错误,您甚至无法访问X509TrustManager.checkServerTrusted()。您需要在更早的时候钩住证书处理,我不相信JSSE中有这样的操作。

    我不相信这是真的。从stacktrace中,checkServerTrusted方法是验证证书的方法。所谓证书错误,如果您的意思是证书格式不正确,可能是这样,但不是这样。checkServerTrusted()检查有效的对等证书是否受信任。如果证书无效,将不会调用它。这对我来说似乎很明显。你真的试过用过期的证书来检验你的假设吗?我已经确认了,确认是由checkServerTrustedMethod()调用的PKIXValidator完成的。请参阅位于的stacktrace