Назад | Перейти на главную страницу

Как найти SSL-сертификат, поддерживающий определенные шифры

У нас есть сайт, и нам необходимо подключиться к сторонней службе, которая использует систему с поддержкой определенных шифров. Я пробовал LetsEncrypt и Comodo, но ни одна из них не работает.

Есть ли ресурс, который я могу найти, чтобы найти, какой центр сертификации SSL поддерживает желаемые шифры, не выполняя установку и выполнение nmap --script ssl-enum-ciphers -p 443 example.org

Вот поддерживаемые шифры:

Cipher#  0 : TLS_RSA_WITH_AES_256_CBC_SHA256 
Cipher#  1 : TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 
Cipher#  2 : TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 
Cipher#  3 : TLS_RSA_WITH_AES_256_CBC_SHA 
Cipher#  4 : TLS_DHE_RSA_WITH_AES_256_CBC_SHA 
Cipher#  5 : TLS_DHE_DSS_WITH_AES_256_CBC_SHA 
Cipher#  6 : TLS_RSA_WITH_AES_128_CBC_SHA256 
Cipher#  7 : TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 
Cipher#  8 : TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 
Cipher#  9 : TLS_RSA_WITH_AES_128_CBC_SHA 
Cipher#  10 : TLS_DHE_RSA_WITH_AES_128_CBC_SHA 
Cipher#  11 : TLS_DHE_DSS_WITH_AES_128_CBC_SHA 
Cipher#  12 : TLS_EMPTY_RENEGOTIATION_INFO_SCSV 
Cipher#  13 : TLS_DH_anon_WITH_AES_256_CBC_SHA256 
Cipher#  14 : TLS_DH_anon_WITH_AES_256_CBC_SHA 
Cipher#  15 : TLS_DH_anon_WITH_AES_128_CBC_SHA256 
Cipher#  16 : TLS_DH_anon_WITH_AES_128_CBC_SHA 
Cipher#  17 : SSL_RSA_WITH_DES_CBC_SHA 
Cipher#  18 : SSL_DHE_RSA_WITH_DES_CBC_SHA 
Cipher#  19 : SSL_DHE_DSS_WITH_DES_CBC_SHA 
Cipher#  20 : SSL_DH_anon_WITH_DES_CBC_SHA 
Cipher#  21 : TLS_RSA_WITH_NULL_SHA256 
Cipher#  22 : SSL_RSA_WITH_NULL_SHA 
Cipher#  23 : SSL_RSA_WITH_NULL_MD5 
Cipher#  24 : TLS_KRB5_WITH_DES_CBC_SHA 
Cipher#  25 : TLS_KRB5_WITH_DES_CBC_MD5

По сути, существует два типа сертификатов, которые различаются типом используемого открытого ключа: типичными являются сертификаты RSA, а реже используемые - сертификаты ECC. Первые используются для шифра с аутентификацией RSA (т.е. TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 ... в вашем списке), а ECC используется для шифрования с аутентификацией ECDSA (в вашем списке нет шифра ECDSA).

Некоторые шифры в вашем списке вообще не используют сертификаты, например TLS_DH_anon_WITH_AES_256_CBC_SHA или TLS_KRB5_WITH_DES_CBC_SHA. Другие шифры в вашем списке вообще не настоящие, а только псевдошифры: TLS_EMPTY_RENEGOTIATION_INFO_SCSV. Кроме того, существуют шифры DSS, для которых требуются сертификаты DSA, которые в любом случае не выдает общедоступный центр сертификации.

Кроме того, многие шифры в этом списке ужасно небезопасны, например SSL_RSA_WITH_NULL_MD5 (без шифрования), SSL_RSA_WITH_DES_CBC_SHA (легко взломать шифрование) или TLS_DH_anon_WITH_AES_256_CBC_SHA (нет защиты от атак человека посередине, так как нет аутентификации сервера).

У нас есть сайт, и нам необходимо подключиться к сторонней службе, которая использует систему с поддержкой определенных шифров.

Если вам нужно подключиться к сторонней службе, вы являетесь клиентом TLS. У клиентов TLS сертификатов обычно нет. Клиентам TLS могут потребоваться (клиентские) сертификаты, если требуется взаимная аутентификация. В этом случае тип сертификата не имеет никакого отношения к шифру - только сертификаты сервера имеют такое отношение. Но серверу, скорее всего, потребуются определенные сертификаты, например сертификаты, выпущенные сторонними центрами сертификации, или другие сертификаты с определенными свойствами. Какие свойства должен иметь сертификат, должны быть задокументированы сторонней службой.

Сертификат не определяет явно, какие шифры доступны на сервере. На самом деле это контролируется (например, на серверах приложений, использующих OpenSSL) параметром конфигурации Cipher String, который позволяет администратору сервера включать или отключать определенные шифры или наборы шифров или выбирать определенный порядок шифров.

Здесь есть полезная информация: https://www.owasp.org/index.php/TLS_Cipher_String_Cheat_Sheet