Можно ли исправить образ докера jruby:9.1 OpenSSL::SSL::SSLError?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Можно ли исправить образ докера jruby:9.1 OpenSSL::SSL::SSLError?

Сообщение Anonymous »

Похоже, что в последнее время ситуация изменилась. jruby:9.1 старше, но обновление в настоящее время представляет собой большое изменение, и без большого количества тестов для унаследованного приложения, мне интересно, есть ли идеи исправить это?
Проблема
% docker run --rm --platform linux/amd64 jruby:9.1 ruby -rnet/http -e 'p Net::HTTP.get_print(URI.parse("https://geoip.maxmind.com/geoip/v2.1/city/"))'
OpenSSL::SSL::SSLError: certificate verify failed
connect_nonblock at org/jruby/ext/openssl/SSLSocket.java:228
connect at /opt/jruby/lib/ruby/stdlib/net/http.rb:938
do_start at /opt/jruby/lib/ruby/stdlib/net/http.rb:868
start at /opt/jruby/lib/ruby/stdlib/net/http.rb:857
start at /opt/jruby/lib/ruby/stdlib/net/http.rb:585
get_response at /opt/jruby/lib/ruby/stdlib/net/http.rb:480
get_print at /opt/jruby/lib/ruby/stdlib/net/http.rb:438
at -e:1

Другие выводы
geoip.maxmind.com использует сертификаты Let's Encrypt, и я пробовал различные способы добавления в хранилище ключей Java, но пока не нашел выигрышной комбинации.
9.2 подойдет
% docker run --rm --platform linux/amd64 jruby:9.2 ruby -rnet/http -e 'p Net::HTTP.get_print(URI.parse("https://geoip.maxmind.com/geoip/v2.1/city/"))'
{"code":"AUTHORIZATION_INVALID","error":"An account ID and license key are required to use this service."}nil

Что я пробовал:
  • установка пакета ca-certificates в Dockerfile, чтобы попытаться обновить сертификаты , это не помогло.
  • отключение проверки SSL работает, но не идеально по типичным соображениям безопасности.
  • Проверка команд openssl казалась нормальной, поэтому это Я думаю, это проблема между Java и JRuby?
docker run --rm --platform linux/amd64 jruby:9.1 echo | openssl s_client -servername geoip.maxmind.com -connect geoip.maxmind.com:443 2>/dev/null

subject=CN=maxmind.com
issuer=C=US, O=Let's Encrypt, CN=E1
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: ECDSA
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 4447 bytes and written 405 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 256 bit
This TLS version forbids renegotiation.
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)


Подробнее здесь: https://stackoverflow.com/questions/784 ... be-patched
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»