使用 OpenJDK 时无法通过 HTTPS 访问 Jenkins
Unable to access Jenkins via HTTPS when using OpenJDK
我正在努力 运行 Jenkins 2.91(RPM 版本)在 Centos 7.2 上使用其嵌入式模式与 OpenJDK (1.8.0_65)
但是,当我通过 HTTPS 连接 Firefox 38.1.0 时出现 "ssl_error_no_cypher_overlap" 错误
使用 Oracle JDK 1.8.0_144 时 运行ning Jenkins 不会出现此问题,只有使用 OpenJDK.
我已经尝试了各种选项,例如以下但没有成功
JENKINS_JAVA_OPTIONS="-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2"
我遇到了 bug 1167153,但是应用 jdk.tls.disabledAlgorithms=EC,ECDHE,ECDH
的修复似乎已经在 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/lib/security/java.security
中就位。
我也试过使用 openssl 查看报告了哪些协议
openssl s_client -connect localhost:8443
>>>
New, TLSv1/SSLv3, Cipher is AES256-SHA256
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1.2
Cipher : AES256-SHA256
我使用 -Djavax.net.debug=ssl,handshake
启用了日志记录,但这意味着报告了另一个错误 - ssl 内部错误 - 显然是由于错误 - NoSuchAlgorithmException: EC AlgorithmParameters not available if SSL logs enabled
我通过安装 bouncycastle 设法解决了这个问题。 OpenJDK 似乎没有附带 ECC 提供程序。
从 https://www.bouncycastle.org/latest_releases.html. e.g bcprov-ext-jdk15on-158.jar
下载 bouncycastle 提供程序
复制到/usr/lib/jvm/java-1.8.0-openjdk-<version>/jre/lib/ext
在 /usr/lib/jvm/java-1.8.0-openjdk-<version>/jre/lib/security/java.security
中的列表末尾添加提供商
security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider
重新启用 ECC 算法,之前结束的行:, EC, ECDHE, ECDH
jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 768
重启詹金斯
我正在努力 运行 Jenkins 2.91(RPM 版本)在 Centos 7.2 上使用其嵌入式模式与 OpenJDK (1.8.0_65)
但是,当我通过 HTTPS 连接 Firefox 38.1.0 时出现 "ssl_error_no_cypher_overlap" 错误
使用 Oracle JDK 1.8.0_144 时 运行ning Jenkins 不会出现此问题,只有使用 OpenJDK.
我已经尝试了各种选项,例如以下但没有成功
JENKINS_JAVA_OPTIONS="-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2"
我遇到了 bug 1167153,但是应用 jdk.tls.disabledAlgorithms=EC,ECDHE,ECDH
的修复似乎已经在 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/lib/security/java.security
中就位。
我也试过使用 openssl 查看报告了哪些协议
openssl s_client -connect localhost:8443
>>>
New, TLSv1/SSLv3, Cipher is AES256-SHA256
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1.2
Cipher : AES256-SHA256
我使用 -Djavax.net.debug=ssl,handshake
启用了日志记录,但这意味着报告了另一个错误 - ssl 内部错误 - 显然是由于错误 - NoSuchAlgorithmException: EC AlgorithmParameters not available if SSL logs enabled
我通过安装 bouncycastle 设法解决了这个问题。 OpenJDK 似乎没有附带 ECC 提供程序。
从 https://www.bouncycastle.org/latest_releases.html. e.g bcprov-ext-jdk15on-158.jar
下载 bouncycastle 提供程序
复制到
/usr/lib/jvm/java-1.8.0-openjdk-<version>/jre/lib/ext
在
中的列表末尾添加提供商/usr/lib/jvm/java-1.8.0-openjdk-<version>/jre/lib/security/java.security
security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider
重新启用 ECC 算法,之前结束的行:
, EC, ECDHE, ECDH
jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 768
重启詹金斯