Не удалось проверить ограничения алгоритма Java на ключе RSA размером 1024 бита - PullRequest
0 голосов
/ 11 февраля 2019

После генерации хранилища ключей Java с помощью: -keyalg RSA -keysize 2048 и настройки политики java.security с помощью:

jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, RSA keySize < 2048

У меня продолжают появляться ошибки:

java.security.cert.CertPathValidatorException: проверка ограничений алгоритма завершилась неудачно для ключа RSA с размером 1024 бит

Я использую следующую команду для генерации ключа RSA 2048 бит:

keytool -genkey -alias tomcat -keyalg RSA -keysize 2048 -keystore star_domain_name.jks -storetype PKCS12 -dname "CN=*.domain_name.com,OU=Engineering, O=Company Name., L=City Name, ST=State, C=US" && keytool -certreq -alias server -file star_domain_name.com.csr -keystore star_domain_name_io.jks

I затемпроверьте выше с:

openssl s_client -showcerts -connect localhost:443

Это показывает:

New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2

Я также просмотреть хранилище ключей с:

keytool -list -v -keystore star_domain_name.com.jks

, который показывает:

Certificate fingerprints:
         MD5:  67:4C:04:90:35:etc...etc...
         SHA1: AD:C8:06:74:3A:F1:72:etc...etc...
         SHA256: C5:D6:81:3B:C1:F7:CE:2D:43:91:06:E9:9etc...etc...
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key

Куда бы я ни посмотрел, я вижу 2048-битный ключ RSA.Однако, когда я хочу использовать хранилище ключей java в моем весеннем загрузочном приложении java, оно продолжает жаловаться:

  • Причина: java.security.cert.CertPathValidatorException: проверка ограничений алгоритма не выполнена для ключаRSA с размером 1024 бит
  • Причина: java.security.cert.CertificateException: сертификаты не соответствуют ограничениям алгоритма

Как только я редактирую java.securityфайл и удалите из него RSA keySize <2048 и перезапустите приложение, все работает… </p>

Это потому, что я не импортировал подписанный сертификат домена?Почему приложение жалуется, хотя я четко настроил политику и хранилище ключей Java для 2048 битов?

Моя конфигурация приложения Java содержит:

ssl.key-store: /opt/cert_path/star_domain_name.com.jks
ssl.enabled: true
ssl.key-store-password: the_password_etc...
ssl.key-store-type: PKCS12
ssl.key-alias: tomcat

Как только я отредактирую файл java.securityи удалите из него RSA keySize <2048 и перезапустите приложение, все работает… </p>

Это потому, что я не импортировал подписанный сертификат домена, а хранилище ключей пусто?Я сомневаюсь в этом.

Почему приложение жалуется, хотя я четко настроил файл политики и хранилище ключей java на 2048 бит?

Файл java.security также содержит:

jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, DSA keySize < 1024

Должно ли это быть отрегулировано?

Я действительно пытался отрегулировать это, но это не имело никакого эффекта ...

1 Ответ

0 голосов
/ 15 февраля 2019

Просто хотел добавить к этому.После включения отладки сертификата путем добавления

-Djava.security.debug=certpath

Итак, в качестве примера:

java -Xms64m -Xmx512m -Djava.security.debug=certpath -Dspring.config.location=config.file -jar appname.jar &>> logfile.log &

Я наконец-то смог понять, почему Java жалуется.По-видимому, зашифрованные инстансы AWS RDS используют сертификат SSL, который составляет 1024 битКогда мои java-приложения вызывают его, они терпят неудачу, потому что их политика настроена на прием только RSA <2048 keySize. </p>

Я связался с AWS для получения дальнейших указаний.

Если кто-то изо всех сил пытается устранить проблемы с сертификатами Java, используйте:

-Djava.security.debug=certpath

Это очень полезно.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...