Невозможно получить доступ к Jenkins через HTTPS при использовании OpenJDK
Я изо всех сил пытаюсь запустить Jenkins 2.91 (версия RPM), используя встроенный режим на Centos 7.2 с OpenJDK (1.8.0_65)
Однако я получаю ошибку "ssl_error_no_cypher_overlap" при подключении к Firefox 38.1.0 через HTTPS
Эта проблема не возникает при запуске Jenkins с Oracle JDK 1.8.0_144, только с OpenJDK.
Я пробовал различные варианты, такие как следующие, но безуспешно
JENKINS_JAVA_OPTIONS="-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2"
Я столкнулся с ошибкой 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 недоступен, если включены протоколы SSL
1 ответ
Мне удалось решить эту проблему, установив bouncycastle. Похоже, OpenJDK не поставляется с поставщиком ECC.
Загрузите провайдера для бодрых игр с https://www.bouncycastle.org/latest_releases.html. например, bcprov-ext-jdk15on-158.jar
Скопировать в
/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
Перезагрузите Дженкинс