Tengo una aplicación de mapas que se pueden añadir ArcGIS 9.3+ mapas base dada una URL. Una de las direcciones Url que me gustaría añadir es de un cliente la URL y la seguridad. Mi asignación de aplicación utilizando Java 6 antes y fue capaz de añadir la URL segura sin problemas. Yo ahora actualizado a Java 7 y estoy haciendo un

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

excepción. En primer lugar, creo que este sea el caso ya que en Java 7, por defecto, el MD2 algoritmo para firmar los certificados SSL está deshabilitado. Usted puede ver esto en java.archivo de seguridad:

"jdk.certpath.disabledAlgorithms=MD2"

Pero cuando reviso el Certification Signature Algorithm de dicha URL, dice SHA-1. Lo que es aún más extraño es que si me comente la "jdk.certpath.disabledAlgorithms=MD2" línea en el java.security archivo, la URL de trabajo sin problemas. Es MD2 utilizado en algún otro lugar durante el SSL proceso? Me estoy perdiendo algo aquí?

  • Se topó con esta excepción cuando el uso de 512-bits de las claves RSA. Mi java.security archivo tiene jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024. Estoy usando OpenJDK 7.
InformationsquelleAutor james | 2013-01-04

9 Comentarios

  1. 50

    Fondo

    MD2 fue ampliamente reconocido como inseguro y por lo tanto discapacitados en Java en la versión de JDK 6u17 (ver notas de la versión de http://www.oracle.com/technetwork/java/javase/6u17-141447.html, «Deshabilitar MD2 en el certificado de validación de la cadena»), así como el JDK 7, como por la configuración que se haya señalado en java.security.

    Verisign fue el uso de una Clase de 3 certificado raíz con el md2WithRSAEncryption algoritmo de firma (de serie 70:ba:e4:1d:10:d9:29:34:b6:38:ca:7b:03:cc:ba:bf), pero en desuso y lo reemplazó con otro certificado con el mismo nombre y clave, pero firmado con el algoritmo de sha1WithRSAEncryption. Sin embargo, algunos servidores todavía estamos enviando el viejo MD2 certificado firmado durante el protocolo de enlace SSL (irónicamente, me encontré con este problema con un servidor que ejecute por Verisign!).

    Puede comprobar que este es el caso de:

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

    Recientes versiones del JDK (por ejemplo, 6u21 y todas las versiones de 7) debe resolver este problema automáticamente la eliminación de certificados con el mismo emisor y de clave pública como un ancla de confianza (en el archivo cacerts por defecto).

    Si sigue teniendo este problema con los nuevos JDKs

    Comprobar si tienes un custom de confianza de gerente de la implementación de los mayores X509TrustManager de la interfaz. JDK 7+ se supone para ser compatible con esta interfaz, sin embargo basado en mi investigación cuando el administrador de confianza implementa X509TrustManager lugar de los más recientes X509ExtendedTrustManager (docs), el JDK utiliza su propia envoltura (AbstractTrustManagerWrapper) y de alguna manera se evita la interna de la corrección para este problema.

    La solución es:

    1. utilizar el valor predeterminado administrador de confianza, o

    2. modificar su confianza personalizada manager para ampliar X509ExtendedTrustManager directamente (un simple cambio).

    • Podría usted echa un vistazo a mi (muy similar), pregunta?
    • No sólo fue el openssl s_client … comando muy útil, pero la solución a mis 6 horas de dolor y sufrimiento fue el X509ExtendedTrustManager cambio.
    • Cambio X509ExtendedTrustManager es la mejor solución nunca. Muchas gracias.
  2. 26

    Eclipse no se pudo conectar con SVN https repositorios (también se debe aplicar a cualquier aplicación a través de SSL/TLS).

    svn: E175002: la Conexión ha sido apagado: javax.net.ssl.SSLHandshakeException: java.de seguridad.cert.CertificateException: Certificados que no se ajusten a la del algoritmo de restricciones

    El problema fue causado por última versión de Java 8 OpenJDK actualización de las personas con discapacidad MD5 algoritmos relacionados. Como una solución temporal hasta que los certificados son emitidos (si alguna vez), cambiar las teclas siguientes en java.archivo de seguridad de

    ADVERTENCIA

    Tenga en cuenta que esto podría tener implicaciones de seguridad como los discapacitados, los algoritmos son consideradas débiles.
    Como alternativa, el solución puede ser aplicado sobre una JVM, mediante una opción de línea de comandos para uso externo java.seguridad fichero con los cambios, por ejemplo:

    java -Djava.security.properties=/etc/sysconfig/noMD5.java.security

    Para Eclipse, añadir una línea en eclipse.ini a continuación -vmargs

    -Djava.security.properties=/etc/sysconfig/noMD5.java.security

    claves originales

    jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
    jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 768

    cambio

    jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
    jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 768

    java.archivo de seguridad se encuentra en linux de 64 a
    /usr/lib64/jvm/java/jre/lib/security/java.seguridad

    • hay una manera en código para reemplazar mismo en apache 4.4
    • no estoy seguro, pero parece relacionado con SSLCipherSuite Directiva. Echa un vistazo aquí httpd.apache.org/docs/current/mod/mod_ssl.html. Busca la cadena de texto: RC4-SHA:AES128-SHA:ALTO:MEDIO:!anular:!MD5
    • el cambio no me funciona, he tenido que comentar estas dos líneas
  3. 8

    En Fedora 28, solo preste atención a la línea de

    de seguridad.useSystemPropertiesFile=true

    de la java.security archivo, que se encuentra en:

    $(dirname $(readlink -f $(que java)))/../lib/security/java.seguridad

    Fedora 28 introducido archivo externo de disabledAlgorithms de control en

    /etc/crypto-políticas/back-ends/java.config

    Puede editar este archivo externo o puede excluirlo de java.security mediante el establecimiento de

    de seguridad.useSystemPropertiesFile=false

    • Yo estaba teniendo este problema con Dbeaver y MS SQL JDBC 6.0 – 6.4 . Esta solución funcionó para mí y configuración -Djdk.tls.cliente.protocolos=TLSv1 no.
    • Yo estaba teniendo problemas en Fedora 28 con certificados con claves RSA de menos de 1024 ser rechazado – me quita de que la excepción de la /etc/crypto-policies/back-ends/java.config y ahora funciona bien. Gracias.
    • Muchas gracias, este fijo que es para mí, en Fedora 30.
  4. 4

    Tenemos este problema con una base de datos no controlamos y que requieren otra solución (Las que aparecen aquí no funciona). Para mi que yo necesitaba:

    -Djdk.tls.client.protocols="TLSv1,TLSv1.1"

    Creo que en mi caso tenía que ver con forzar un orden determinado.

    • Esta es la única solución que me ayudó a luchar contra «los Certificados no se ajusta a algoritmo de las limitaciones de la» excepción con DavMail. Tuvo que modificar /usr/bin/davmail secuencia de comandos para agregar esa opción.
  5. 1

    esto es más probable que ocurra porque en algún lugar a lo largo de la cadena de certificado tiene un certificado, más probable es que una vieja raíz, que todavía está firmado con el MD2RSA algoritmo.

    Usted necesita para buscar en el almacén de certificados y eliminarlo.

    Luego volver a su autoridad de certificación y les piden, a continuación, nueva raíz.

    Lo más probable es que será la misma raíz con el mismo periodo de validez, pero ha sido recertificada con SHA1RSA.

    Espero que esta ayuda.

  6. 1

    colegas.

    Me he encontrado con este problema durante el desarrollo de la automatización de pruebas para el API de REST. JDK 7_80 se ha instalado en mi máquina. Antes he instalado el JDK 8, todo funcionaba bien y tenía una posibilidad de obtener los tokens de OAuth 2.0 con un JMeter. Después he instalado el JDK 8, la pesadilla con Certificates does not conform to algorithm constraints comenzó.

    Tanto JMeter y la Serenidad no tienen posibilidad de obtener un token. JMeter utiliza el JDK de la biblioteca para realizar la solicitud. La biblioteca sólo se provoca una excepción cuando la llamada de la biblioteca es para conectar a las estaciones de trabajo que utilizan, ignorando la petición.

    Lo siguiente fue comentario todas las líneas dedicadas a disabledAlgorithms en TODOS java.archivos de seguridad.

    C:\Java\jre7\lib\security\java.security
    C:\Java\jre8\lib\security\java.security
    C:\Java\jdk8\jre\lib\security\java.security
    C:\Java\jdk7\jre\lib\security\java.security

    A continuación, se comenzó a trabajar en el pasado. Sé que, que es una aproximación de fuerza bruta, pero era la más simple manera de solucionarlo.

    # jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 768
    # jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
    • Tengo un poco apropiada de la solución, de esta ad-hoc de uno 🙂 En nuestro caso hybris trabaja con una débil certificado (y se inicia en Java 7 y se comporta como un servidor desde el punto de vista arquitectónico). Así que, para solucionar este problema que yo le sugiero que lea un poco más sobre este problema aquí (sslshopper.com/…). Una única cosa que usted necesita hacer es generar una nueva keystore (uso de 2048 bits de la clave para generar un certificado, su importante) archivo y reemplazar una vieja. Y, finalmente, funciona muy bien.
  7. 1

    Ya que este resultado es la primera vez que Google devuelve este error, sólo voy a añadir que si alguien busca la manera de hacer cambiar la configuración de seguridad de java sin necesidad de cambiar el archivo global de java.de seguridad (por ejemplo, usted necesita para ejecutar algunas pruebas), sólo puede proporcionar un reemplazo de seguridad del archivo por JVM parámetro
    -Djava.de seguridad.propiedades=su/archivo/ruta en la que puedes activar los algoritmos necesarios por razones imperiosas de las incapacidades.

  8. 0

    Tengo este problema en JABÓN-interfaz de usuario y no una solución por encima de los que no me ayudaron.

    Solución adecuada para mí fue añadir

    -Dsoapui.sslcontext.algoritmo=TLSv1

    en vmoptions archivo (en mi caso fue …\SoapUI-5.4.0\bin\SoapUI-5.4.0.vmoptions)

Dejar respuesta

Please enter your comment!
Please enter your name here