validar una ubicacion solicitando solicita sistema siguiente seguridad restricciones porque por podido permiso iniciar firma esta ejecutara configuraciĆ³n certificado bloqueado bloqueada aplicacion aparece acceso java ssl java-7 arcgis arcgis-server

una - java.security.cert.CertificateException: los certificados no se ajustan a las restricciones del algoritmo



una aplicacion sin firma de la siguiente ubicacion esta solicitando permiso (9)

Tengo una aplicación de mapeo que puede agregar mapas base de ArcGIS 9.3+ dada una URL. Una de las URL que me gustaría agregar proviene de la URL de un cliente y está protegida. Mi aplicación de mapeo estaba usando Java 6 anteriormente y pude agregar la URL segura sin problemas. Ahora me actualicé a Java 7 y estoy obteniendo un

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

excepción. Al principio, creo que este es el caso porque en Java 7, por defecto, el algoritmo MD2 para firmar certificados SSL está desactivado. Puedes ver esto en el archivo java.security:

"jdk.certpath.disabledAlgorithms=MD2"

Pero cuando reviso el Certification Signature Algorithm de Certification Signature Algorithm de esa URL, dice SHA-1 . Lo que es aún más extraño es que si hago un comentario sobre la línea "jdk.certpath.disabledAlgorithms=MD2" en el archivo java.security , la URL funcionará sin problemas. ¿Se usa MD2 en otro lugar durante el proceso de SSL? ¿Me estoy perdiendo de algo?


Fondo

MD2 fue ampliamente reconocido como inseguro y por lo tanto está deshabilitado en Java en la versión JDK 6u17 (ver notas de la versión http://www.oracle.com/technetwork/java/javase/6u17-141447.html , "Deshabilitar MD2 en la validación de la cadena de certificados") , así como JDK 7, según la configuración que indicó en java.security .

Verisign estaba utilizando un certificado raíz de Clase 3 con el algoritmo de firma md2WithRSAEncryption (serial 70:ba:e4:1d:10:d9:29:34:b6:38:ca:7b:03:cc:ba:bf ), pero desaprobado y lo reemplazó con otro certificado con la misma clave y nombre, pero firmado con el algoritmo sha1WithRSAEncryption . Sin embargo, algunos servidores siguen enviando el antiguo certificado firmado MD2 durante el protocolo de enlace SSL (irónicamente, me encontré con este problema con un servidor ejecutado por Verisign).

Puede verificar que este es el caso con:

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

Las versiones recientes del JDK (por ejemplo, 6u21 y todas las versiones publicadas de 7) deberían resolve este problema eliminando automáticamente certs con el mismo emisor y clave pública que un ancla de confianza (en cacerts por defecto).

Si todavía tiene este problema con los JDK más nuevos

Compruebe si tiene un administrador de confianza personalizado que implementa la interfaz X509TrustManager anterior. Se supone que JDK 7+ es compatible con esta interfaz, sin embargo, según mi investigación, cuando el administrador de confianza implementa X509TrustManager lugar del X509ExtendedTrustManager ( docs ) más nuevo, el JDK usa su propio contenedor ( AbstractTrustManagerWrapper ) y de algún modo elude la solución interna para este problema .

La solución es:

  1. usar el administrador de confianza predeterminado, o

  2. modifique su administrador de confianza personalizado para extender X509ExtendedTrustManager directamente (un cambio simple).


Dado que este resultado es el primero que Google devuelve por este error, solo agregaré que si alguien busca la manera de cambiar la configuración de seguridad de Java sin cambiar el archivo global java.security (por ejemplo, necesita ejecutar algunas pruebas), puede solo proporcione un archivo de seguridad superior por parámetro de JVM -Djava.security.properties = su / archivo / ruta en el que puede habilitar los algoritmos necesarios anulando las inhabilitaciones.


Eclipse no pudo conectarse a los repositorios https de SVN (también debería aplicarse a cualquier aplicación que use SSL / TLS).

svn: E175002: la conexión se ha cerrado: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: los certificados no se ajustan a las restricciones del algoritmo

El problema fue causado por la última actualización de Java 8 OpenJDK que deshabilitó los algoritmos relacionados con MD5. Como solución alternativa hasta que se emitan nuevos certificados (si los hubiera), cambie las siguientes claves en el archivo java.security

ADVERTENCIA
Tenga en cuenta que esto podría tener implicaciones de seguridad ya que los algoritmos deshabilitados se consideran débiles. Como alternativa, la solución alternativa se puede aplicar en una base de JVM mediante una opción de línea de comando para usar un archivo java.security externo con estos cambios, por ejemplo:
java -Djava.security.properties=/etc/sysconfig/noMD5.java.security
Para Eclipse , agregue una línea en eclipse.ini debajo -vmargs
-Djava.security.properties=/etc/sysconfig/noMD5.java.security

llaves originales

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

cambiar a

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

El archivo java.security se encuentra en Linux 64 en /usr/lib64/jvm/java/jre/lib/security/java.security


En Fedora 28, solo preste atención en línea

security.useSystemPropertiesFile = true

de java.security propiedades de java.security .

Fedora 28 introdujo un archivo externo de control de algoritmos deshabilitados en

/etc/crypto-policies/back-ends/java.config

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


Es más probable que esto ocurra porque en algún punto de la cadena de certificados tiene un certificado, más probablemente una raíz antigua, que todavía está firmada con el algoritmo MD2RSA.

Debe ubicarlo en su tienda de certificados y eliminarlo.

Luego, regrese a su autoridad de certificación y pídales una nueva raíz.

Es más probable que sea la misma raíz con el mismo período de validez, pero se ha recertificado con SHA1RSA.

Espero que esto ayude.


Tenemos este problema con una base de datos que no controlamos y requirió otra solución (las que figuran aquí no funcionaron). Para el mío, necesitaba:

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

Creo que en mi caso tuvo que ver con forzar un cierto orden.


Tengo este problema en SOAP-UI y ninguna de las soluciones anteriores no me ayudó.

La solución adecuada para mí fue agregar

-Dsoapui.sslcontext.algorithm = TLSv1

en el archivo vmoptions (en mi caso fue ... / SoapUI-5.4.0 / bin / SoapUI-5.4.0.vmoptions)



colegas.

Me he enfrentado a este problema durante el desarrollo de pruebas de automatización para nuestra API REST. JDK 7_80 fue instalado solo en mi máquina. Antes de instalar JDK 8, todo funcionó bien y tuve la posibilidad de obtener tokens OAuth 2.0 con un JMeter . Después de instalar JDK 8, la pesadilla con Certificates does not conform to algorithm constraints .

Tanto JMeter como Serenity no tenían la posibilidad de obtener un token. JMeter usa la biblioteca JDK para realizar la solicitud. La biblioteca solo genera una excepción cuando la llamada a la biblioteca se realiza para conectarse a los puntos finales que la usan, ignorando la solicitud.

Lo siguiente fue comentar todas las líneas dedicadas a los algoritmos deshabilitados en TODOS los archivos java.security.

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

Entonces comenzó a funcionar por fin. Lo sé, ese es un enfoque de fuerza bruta, pero era la manera más simple de solucionarlo.

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