Шифры DHE не предоставляются поставщиком BouncyCastle - PullRequest
1 голос
/ 13 июля 2020

У меня есть Java TLS-сервер, и я переключился с исходного поставщика SunJSSE на BCJSSE (BouncyCastle JSSE FIPS, v1.0.10). Теперь, если кто-то попытается запросить мой сервер с помощью nmap -sT -Pn --script ssl-cert, ssl-enum-ciphers -p, будут показаны шифры с включенным алгоритмом обмена ключами DHE и рукопожатие было успешным:

ssl-enum-ciphers:
|   TLSv1.2:
|     ciphers:
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (dh 1024) - A
|       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 1024) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (dh 1024) - A
|       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 1024) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A
• 1003 . Однако при запуске curl, скомпилированном с той же версией openssl:
curl -vvv -k https://<host>:<port>--tlsv1.2 --ciphers DHE-RSA-AES128-CCM -u <user>:<pass> -c /tmp/cookie

, результат будет:

* error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
* Closing connection 0
curl: (35) error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure

Старый поставщик криптографии, используемый для успешного установления связи для каждого из поддерживаемых шифров. (не последний, который доступен только в B C).

В документации BCJSSE говорится: Имя набора шифров: TLS_DHE_RSA_WITH_AES_128_CCM Режим FIPS: N, который я интерпретирую как поддерживаемый.

Итак, Кто-нибудь знает, почему существует разница между выводами nmap и как можно успешно установить соединение с s_client, но curl отказывается устанавливать sh такое безопасное соединение. И есть ли здесь что-то особенное, что нужно исправить и как, или это можно рассматривать как ожидаемое поведение?

...