Рукопожатие SSL - проблема java.security.InvalidAlgorithmParameterException - PullRequest
0 голосов
/ 21 ноября 2018

Нужен ваш совет для решения проблемы Java.

В настоящее время у нас есть проблема при доступе к веб-сервису с использованием кода Java.Наш поставщик использует SSL - 2048 бит RSA (SHA256 с RSA) с простым значением DH (алгоритм Диффи-Хеллмана), превышающим 1024 для SSL.У нас есть Java-версия 1.6.0.10 в производстве.

Когда мы выполняем код, мы получаем ошибку -

Caused by: java.lang.RuntimeException: Could not generate DH keypair at com.sun.net.ssl.internal.ssl.DHCrypt.<init>(DHCrypt.java:106)
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverKeyExchange(ClientHandshaker.java:556)
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:183)
        at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)
        at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:893)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1165)
        ... 6 more
Caused by: java.security.InvalidAlgorithmParameterException: Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive) at com.sun.crypto.provider.DHKeyPairGenerator.initialize(DashoA13*..)
        at java.security.KeyPairGenerator$Delegate.initialize(KeyPairGenerator.java:627)
        at com.sun.net.ssl.internal.ssl.DHCrypt.<init>(DHCrypt.java:100)         ... 13 more

Это известная ошибка / ограничение java, и она уже исправлена ​​в v7 и далее, но все еще существует в '1.6.0.10 '

https://bugs.java.com/bugdatabase/view_bug.do?bug_id=7044060 https://bugs.java.com/bugdatabase/view_bug.do?bug_id=6521495

В приведенных выше ссылках я нашел следующее утверждение -

ВРЕМЯ ПРЕДСТАВЛЕНИЯ КЛИЕНТА: Использование JCE-реализации BouncyCastle, который не налагает это ограничение, или напрямую прибегает к API BigNumber.

Мы не можем перейти на последнюю версию Java.Есть ли что-нибудь, что мы можем реализовать, чтобы решить эту проблему рукопожатия SSL?Нужны ли нам изменения на стороне сервера для реализации bouncycastle?Или мы можем использовать только на стороне клиента?Любые советы по решению этой проблемы высоко ценится.

1 Ответ

0 голосов
/ 21 ноября 2018

Банку для реализации JCE BouncyCastle можно загрузить в ПОСЛЕДНИЕ ВЫПУСКИ JAVA пакета Bouncy Castle Crypto .
А необходимую конфигурацию можно найти в Для настройки провайдера JCE .
После завершения настройки.Распечатайте информацию о поставщиках безопасности, как показано ниже.

Provider[]  providers = Security.getProviders();
for (int i = 0; i != providers.length; i++)
{
     System.out.println(providers[i].getInfo());
}

Проверьте, отображается ли «BouncyCastle Security Provider v1.60» (предположим, вы загружаете версию 1.6)

...