java.security.cert.CertificateException: Certificates does not conform to algorithm constraints

后端 未结 9 1544
难免孤独
难免孤独 2020-11-30 02:59

I have a mapping application that can add ArcGIS 9.3+ base maps given a URL. One of the URLs that I would like to add is from a customer\'s URL and is secured. My

相关标签:
9条回答
  • 2020-11-30 03:53

    Background

    MD2 was widely recognized as insecure and thus disabled in Java in version JDK 6u17 (see release notes http://www.oracle.com/technetwork/java/javase/6u17-141447.html, "Disable MD2 in certificate chain validation"), as well as JDK 7, as per the configuration you pointed out in java.security.

    Verisign was using a Class 3 root certificate with the md2WithRSAEncryption signature algorithm (serial 70:ba:e4:1d:10:d9:29:34:b6:38:ca:7b:03:cc:ba:bf), but deprecated it and replaced it with another certificate with the same key and name, but signed with algorithm sha1WithRSAEncryption. However, some servers are still sending the old MD2 signed certificate during the SSL handshake (ironically, I ran into this problem with a server run by Verisign!).

    You can verify that this is the case by getting the certificate chain from the server and examining it:

    openssl s_client -showcerts -connect <server>:<port>

    Recent versions of the JDK (e.g. 6u21 and all released versions of 7) should resolve this issue by automatically removing certs with the same issuer and public key as a trusted anchor (in cacerts by default).

    If you still have this issue with newer JDKs

    Check if you have a custom trust manager implementing the older X509TrustManager interface. JDK 7+ is supposed to be compatible with this interface, however based on my investigation when the trust manager implements X509TrustManager rather than the newer X509ExtendedTrustManager (docs), the JDK uses its own wrapper (AbstractTrustManagerWrapper) and somehow bypasses the internal fix for this issue.

    The solution is to:

    1. use the default trust manager, or

    2. modify your custom trust manager to extend X509ExtendedTrustManager directly (a simple change).

    0 讨论(0)
  • 2020-11-30 03:56

    Since this result is the first that Google returns for this error, I'll just add that if anyone looks for way do change java security settings without changing the global file java.security (for example you need to run some tests), you can just provide an overriding security file by JVM parameter -Djava.security.properties=your/file/path in which you can enable the necessary algorithms by overriding the disablements.

    0 讨论(0)
  • 2020-11-30 03:57

    I have this issue in SOAP-UI and no one solution above dont helped me.

    Proper solution for me was to add

    -Dsoapui.sslcontext.algorithm=TLSv1

    in vmoptions file (in my case it was ...\SoapUI-5.4.0\bin\SoapUI-5.4.0.vmoptions)

    0 讨论(0)
提交回复
热议问题