Решено Ubuntu, LDAPS и CA cert RSA-SHA1

Статус
Закрыто для дальнейших ответов.

Eviil

Почетный гость
Добрый день коллеги.
Случилась интересная проблема: необходимо в windows-домене включить LDAPS. Виндовые клиенты работают без проблем, а вот серверы на Ubuntu - отказываются.

Тестовое подключение падает с ошибкой:

Bash:
root@ubuntutest:/home/n.ivanko# gnutls-cli --print-cert -p 636 --x509cafile /etc/ssl/certs/ca-certificates.crt domain.ru
Processed 128 CA certificate(s).
Resolving 'domain.ru:636'...
Connecting to '172.xx.xx.xx:636'...
- Certificate type: X.509
- Got a certificate list of 1 certificates.
- Certificate[0] info:
 - no subject,issuer `CN=domain ROOT CA,DC=domain,DC=ru', serial 0x720000008c.....008c, RSA key 2048 bits, signed using RSA-SHA1 (broken!), activated `2021-10-20 10:33:54 UTC', expires `2023-10-20 10:33:54 UTC', pin-sha256="9rCo.....VNVY="
        Public Key ID:
                sha1:6de.....bfb
                sha256:f6b.....556
        Public Key PIN:
                pin-sha256:9rC.....NVY=

-----BEGIN CERTIFICATE-----
MIIEvDCCA6SgAwIBAgITcgAAAIwXCRZ9MptN4wAAAAAAjDANBgkqhkiG9w0BAQUF
.....
bu8u3M4Rka5bwWdBmbgZbw==
-----END CERTIFICATE-----

- Status: The certificate is NOT trusted. The certificate issuer is unknown. The certificate chain uses insecure algorithm.
*** PKI verification of server certificate failed...
*** Fatal error: Error in the certificate.

Несколько лет назад корневые сертификаты с SHA1 были запрещены по умолчанию в линуксах, но должен быть какой-то способ сделать исключение или для конкретного домена, или для конкретного сертификата.
Понятно что можно изменить корневой сертификат, но, к сожалению, нельзя.
Ещё можно обойти проблему указав в /etc/ldap/ldap.conf
Код:
TLS_REQCERT    allow
Но это тоже не вариант, тогда нет смысла вообще в разворачивании LDAPS.

Так вот, коллеги, никто не сталкивался?
 
Status: The certificate is NOT trusted. The certificate issuer is unknown. The certificate chain uses insecure algorithm.
Издатель сертификата неизвестен. Убунты не доверяют корневому сертификату цс
 
обновить центр сертификации, сделать новый корневой сертификат с поддерживаемым алгоритмом
 
не сталкивался но думаю где-то в каком то конфиге надо разрешить sha1
 
Попробуйте прописать параметр olcTLSProtocolMin
dn: cn=config
changetype: modify
replace: olcTLSProtocolMin
olcTLSProtocolMin: 1.0

Как здесь только наоборот (в гайде отключают TLS 1.0)
 
RSA-SHA1 вроде устарел и не безопасен.
Наверное никак нельзя. А винда что была "дуршлак" что и осталась. Потому и работает
 
RSA-SHA1 вроде устарел и не безопасен.
Наверное никак нельзя. А винда что была "дуршлак" что и осталась. Потому и работает
Ну она просто поддерживает его, но необязательно же использовать.

Security Protocol Support by OS Version​

FIGURE 1: SECURITY PROTOCOL SUPPORT BY OS VERSION
Windows OSSSLv2SSLv3TLS 1.0TLS 1.1TLS 1.2
Windows VistaEnabledEnabledDefaultNot SupportedNot Supported
Windows Server 2008EnabledEnabledDefaultDisabled*Disabled*
Windows 7 (WS2008 R2)EnabledEnabledDefaultDisabled*Disabled*
Windows 8 (WS2012)DisabledEnabledEnabledEnabledDefault
Windows 8.1 (WS2012 R2)DisabledEnabledEnabledEnabledDefault
Windows 10DisabledEnabledEnabledEnabledDefault
Windows Server 2016Not SupportedDisabledEnabledEnabledDefault
 
версия ubuntu не поддерживает Secure Hash Algorithm 1
Это да. Надо включить поддержку.
Или в убунте намертво выпилили поддержку SHA1 и все инфраструктуры в мире должны были срочно перестроиться и сменить корневые сертификаты?
Ну такое.
 
Не совсем понял что это за параметр. Возможно его стоит убрать или изменить. А какой у вас указан ?
Okay, I finally figured this out. The solution lies in my /etc/ldap.conf

# Ubuntu has stuff built against GNUtls instead of openssl
# Get this from the gnutls-cli manpage under --priority

TLS_CIPHER_SUITE SECURE256

I was not specifying --priority SECURE256 when issuing the gnutls-cli commands, so it was using different algorithms


TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_RC4_128_SHA (0x5)
TLS_ECDHE_RSA_WITH_RC4_128_SHA
 
Не совсем понял что это за параметр. Возможно его стоит убрать или изменить. А какой у вас указан ?
Изначально не был указан ни какой.
Я пробовал перебрать разные варианты TLS_CIPHER_SUITE.
Пробовал указывать разные варианты приоритета:

--priority=string
Priorities string.
TLS algorithms and protocols to enable. You can use predefined sets of ciphersuites such as PERFORMANCE, NORMAL, PFS, SECURE128, SECURE256. The default is NORMAL.
 
Уговорить убунту принять сертификат, сгенерированный на основе RSA-SHA1 не удалось, решили пойти по пути обновления корневого сертификата.
Оказалось, что это очень просто и быстро.
Делал вот по этой статье, если кому интересно.

Вкратце:
На сервере, на котором установлено Certification Authority открыть от админа cmd или PS, выполнить:
Код:
certutil -setreg ca\csp\CNGHashAlgorithm SHA256

Далее перезапустить сервис certsvc
Код:
net stop certsvc
net start certsvc

Далее перевыпустить корневой сертификат без генерации новой пары ключей.

Старые "клиентские" сертификаты будут автоматически удостоверяться новым, модным и красивым сертификатом. Со временем политики размажут новый сертификат по клиентским машинам и вообще всё будет хорошо.
Но это уже вопрос не из этой темы.

Всем спасибо за помощь :)
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх