jdk ec2 aws jetty java-8 openjdk jce jetty-9

jetty - aws - Los conjuntos de cifrado ECDHE no son compatibles con OpenJDK 8 instalado en la máquina EC2 Linux



install java in aws ec2 (4)

Así que estoy ejecutando una configuración similar, con un cuadro de AWS que ejecuta openjdk-1.8.0.51. lo que lo resolvió para mí es agregar bouncycastle como proveedor de esta manera:

  • Agregue bcprov-<verion>.jar a /usr/lib/jvm/jre/lib/ext

  • Edite /usr/lib/jvm/jre/lib/security/java.security agregando la siguiente línea a la lista de proveedores:

    security.provider.6=org.bouncycastle.jce.provider.BouncyCastleProvider

(Lo agregué como la sexta entrada, pero puede agregar más en el orden si lo prefiere)

Reinicié mi aplicación y pude usar conjuntos de cifrado basados ​​en EC como TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 .

Al iniciar jetty-distribution-9.3.0.v20150612 con openjdk 1.8.0_51 ejecutándose en una máquina EC2 Amazon Linux, se imprime que no se admiten todas las suites ECDHE configuradas.

2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA not supported

Estos están habilitados en jetty/etc/jetty-ssl-context.xml -

<Set name="IncludeCipherSuites"> <Array type="java.lang.String"> <!-- TLS 1.2 AEAD only (all are SHA-2 as well) --> <Item>TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256</Item> <Item>TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256</Item> <Item>TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384</Item> <Item>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</Item> <Item>TLS_DHE_RSA_WITH_AES_256_GCM_SHA384</Item> <Item>TLS_DHE_RSA_WITH_AES_128_GCM_SHA256</Item> ...

Leí que Oracle Java 8 debería admitir estos protocolos , pero ¿tal vez eso no sea compatible con OpenJDK? ¿O debería habilitarlo de alguna manera?

Actualizar

El proveedor criptográfico JCE de Oracle está instalado en jre/lib/security/ , pero no ayudó.



La causa raíz es que OpenJDK en CentOS / RHEL / Amazon Linux con OpenJDK en ellos simplemente no se envían con las bibliotecas nativas necesarias para admitir EC. Los archivos de política ilimitados son una pista falsa, al igual que cualquier intento de inhabilitar varios algoritmos, etc. Si las bibliotecas no están allí, no puede usar las funciones.

La respuesta aceptada de "instalar Bouncy Castle" funciona porque BC proporciona una implementación de Java puro de todos los algoritmos deseados. Idealmente, el JDK proporcionaría implementaciones nativas que producirían un mayor rendimiento.

Parece que OpenJDK en Amazon Linux solo tendrá que esperar. :(

Ref: http://armoredbarista.blogspot.de/2013/10/how-to-use-ecc-with-openjdk.html

También: https://security.stackexchange.com/questions/117975/how-to-enable-ecdhe-in-openjdk-1-8-0-in-centos-6-7

ACTUALIZACIÓN 2016-11-09

Parece que la biblioteca nativa de curva Elíptica de Oracle ( libsunec.so ) está licenciada bajo la GPL. Puede confirmar esto yendo a la página de descarga de Oracle , haciendo clic en Licencias de terceros y verificando el archivo README para su versión de Java.

Esto significa que, si puede obtener una copia de JRE / JDK de Oracle para la plataforma y arquitectura de destino, puede tomar la biblioteca libsunec.so e instalarla legalmente en la instalación de OpenJDK.

Para mí, eso significaba tomar el archivo $JAVA_HOME/jre/lib/amd64/libsunec.so de un Oracle Java 8 JRE y $JAVA_HOME/jre/lib/amd64/libsunec.so en, por ejemplo, /usr/lib/jvm/jre-1.8.0/lib/amd64/ . Eso es todo lo que se requiere para habilitar los algoritmos de curva elíptica.

ACTUALIZACIÓN 2018-03-08

Oracle Java 9 incluirá las bibliotecas de "criptografía de fuerza ilimitada" habilitadas por defecto , así que eso es bueno. Parece que OpenJDK aún requerirá que establezca una propiedad del sistema para habilitar la "criptografía de fuerza ilimitada" .


2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA not supported 2015-08-12 16:51:20 main SslContextFactory [INFO] Cipher TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA not supported

Thes-e están habilitados en jetty / etc / jetty-ssl-context.xm