У нас есть сайт, и нам необходимо подключиться к сторонней службе, которая использует систему с поддержкой определенных шифров. Я пробовал 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