Браузеры Chromium TLS1.2 не работают с сертификатом, выданным ADCS на сервере 2012 R2

tl;dr: TLS 1.2 между Server 2012 R2 и браузерами на базе Chromium завершается сбоем при использовании сертификатов, выпущенных AD CS. Отлично работает на сервере 2016+ и на 2012 R2 с Firefox/IE/Cygwin-curl.

У нас есть несколько внутренних веб-серверов Server 2012 R2, на которых мы пытаемся перенести общедоступные сертификаты на сертификаты, выданные нашим интегрированным центром сертификации AD, и исключить менее безопасные настройки шифрования, включая CBC MAC. Сервер 2012 R2 не поддерживает ECDHE_RSA с GCM, а это означает, что мы пытаемся использовать сертификат на основе ECDH. Однако мы столкнулись с аналогичной проблемой, когда разрешили наборы шифров с CBC-MAC, например TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, с сертификатом RSA, выданным тем же центром сертификации. Используя наш общедоступный сертификат с подстановочными знаками, выданный GlobalSign, мы можем подключаться ко всем браузерам.

Корпоративный центр сертификации и автономный корневой центр сертификации являются доверенными, и мы убедились, что они работают правильно. Сертификаты, использующие несколько разных шаблонов, выданные серверам 2016 и 2019 годов, работают без проблем во всех браузерах. Шаблоны на основе ECDH и RSA одинаково хорошо работают в версиях 2016+.

Крипто-шаблон сертификата ECDH:

Крипто-шаблон сертификата RSA:

Сертификаты RSA и ECDH на серверах 2012 R2 принимаются Firefox (как только ему было сказано доверять им как через политику, так и вручную устанавливая), до Chromium Edge, IE и Cygwinи. Я подтвердил, что мы используем современные шифры в реестре, переустанавливая их с помощью IISCrypto , и убедился, что сервер предлагает совместимые доступные шифры с OpenSSL и nmap. Кроме того, я подтвердил, что клиенты действительно могут подключаться с использованием этих шифров.

Firefox показывает, что он подключается с помощью TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, который, согласно Qualys , поддерживается в версии Chrome, которую мы используем.

С ECDH

      PORT    STATE SERVICE
443/tcp open  https
| ciphers:
|   TLSv1.1:
|     ciphers:
|       TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|     compressors:
|       NULL
|     cipher preference: server
|   TLSv1.2:
|     ciphers:
|       TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
|       TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
|       TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|     compressors:
|       NULL
|     cipher preference: server
|_  least strength: A

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

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

      PORT    STATE SERVICE
443/tcp open  https
| ciphers:
|   SSLv3:
|     ciphers:
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
|       TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
|     compressors:
|       NULL
|     cipher preference: server
|     warnings:
|   TLSv1.0:
|     ciphers:
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 1024) - A
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 1024) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
|       TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
|     compressors:
|       NULL
|     cipher preference: server
|   TLSv1.1:
|     ciphers:
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 1024) - A
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 1024) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
|       TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
|     compressors:
|       NULL
|     cipher preference: server
|   TLSv1.2:
|     ciphers:
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 1024) - A
|       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 1024) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 1024) - A
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 1024) - A
|       TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
|       TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
|     compressors:
|       NULL
|     cipher preference: server
|_  least strength: C

Мои вопросы:

  1. Почему браузерам на базе Chromium не удается согласовать набор шифров, когда сервер предлагает совместимые наборы шифров?
  2. Что мне нужно настроить, чтобы разрешить Server 2012 R2 использовать внутренние сертификаты?
  3. Есть ли лучший способ справиться с тем, что я пытаюсь сделать, кроме обновления серверов приложений до 2016/2019? На данный момент кажется, что полное отключение TLS и размещение всего за LB/обратным прокси-сервером может быть лучшей идеей, даже если это односерверные решения.

РЕДАКТИРОВАТЬ: я обнаружил ошибку в Chromium , и они подтвердили, что наборы шифров, предлагаемые сервером, должны быть приняты Chrome. Сейчас они проводят расследование после того, как я предоставил сетевые журналы, полученные через CHROME://Net-Export. Это может быть связано со старой ошибкой Chrome/2012 . Как только Google сообщит о проблеме, я снова обновлю этот пост. Однако на данный момент похоже, что с конфигурацией с нашей стороны все в порядке.

Спасибо за поиск!

0 ответов

Другие вопросы по тегам