Я пытаюсь подключиться к старому API (Запуск Java 6) с Node, и меня блокирует рукопожатие SSL.
Полная ошибка выглядит так: Error: 65756:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:openssl\ssl\statem\statem_clnt.c:1472:
Я пробовал много разных вещей, чтобы решить эту проблему, но ни один не приблизил меня. Вот тестовый скрипт, который я запускаю, чтобы не тратить всю интеграцию:
const tls = require('tls');
tls.connect({
host: 'old.api.com',
port: 8443,
//ciphers: suiteFromNmap,
//secureProtocol: 'TLSv1_method',
//minDHSize: 768,
}, function(result) {
console.log(result);
}).on('error', function(err) {
console.log(err);
});
Я пытался поиграть с параметром шифров, никогда не делал различий, какой бы набор я ни использовал, иногда выходил из строя с другой ошибкой из-за отсутствия общих шифров.
Я немного покопался в nmap, что привело к этому:
PORT STATE SERVICE
8443/tcp open https-alt
| ssl-enum-ciphers:
| TLSv1.0:
| ciphers:
| TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA - E
| TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 768) - E
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 768) - C
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 768) - B
| TLS_DHE_RSA_WITH_DES_CBC_SHA (dh 768) - E
| TLS_RSA_EXPORT_WITH_DES40_CBC_SHA - E
| TLS_RSA_EXPORT_WITH_RC4_40_MD5 - E
| TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_DES_CBC_SHA (rsa 2048) - C
| TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
| TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
| compressors:
| NULL
| cipher preference: client
| warnings:
| 64-bit block cipher 3DES vulnerable to SWEET32 attack
| 64-bit block cipher DES vulnerable to SWEET32 attack
| 64-bit block cipher DES40 vulnerable to SWEET32 attack
| Broken cipher RC4 is deprecated by RFC 7465
| Ciphersuite uses MD5 for message integrity
| Key exchange (dh 768) of lower strength than certificate key
|_ least strength: E
Я попытался изменить параметр minDHSize
, чтобы он соответствовал указанному в предупреждениях, но ошибка осталась прежней.
Попытался использовать онлайн-проверку SSL (https://www.ssllabs.com/ssltest/) и получил это:
![ssllabs test result](https://i.stack.imgur.com/jMqMt.png)
Попробовал эти шифры, но ошибка все та же.
ssllabs.com, кажется, доволен своим сертификатом, но wget не работает без --no-check-certificate
:
ERROR: The certificate of ‘old.api.com’ is not trusted.
ERROR: The certificate of ‘old.api.com’ hasn't got a known issuer.
На данный момент я не уверен, что еще я могу попробовать, я ничего не могу сделать со своей стороны, чтобы узел подключился к этому серверу? Я готов пойти на версию с низким уровнем безопасности, учитывая, что ничего особо важного или приватного не происходит, если мне не нужно делать небезопасным весь экземпляр узла.