Мы работаем над веб-проектом, в котором нам нужно иметь возможность подключиться к домену активного каталога, а затем передать учетные данные пользователя в домен, чтобы убедиться, что пользователь успешно прошел проверку подлинности, прежде чем мы предоставим ему доступ к одному из наших веб-приложений. У нас есть HTTPS, работающий нормально, чтобы клиентский интерфейс принимал учетные данные. Проблема, с которой мы сталкиваемся, связана с соединением между нашим сервером и сервером Active Directory. Сервер Active Directory обслуживается другим отделом нашего ИТ-отдела, и у нас нет к нему доступа. Этот сервер Active Directory использует самозаверяющий сертификат и не имеет полного доменного имени (например, people.local).
Я читал много мест, где говорится об установке переменной TLS_REQCERT в значение никогда; однако меня беспокоят атаки типа «злоумышленник посередине», и я не чувствую себя комфортно, оставляя настройку таким образом. Я также прочитал несколько статей, в которых говорится о возможности запрашивать сервер Active Directory из командной строки Linux, просматривать самозаверяющий сертификат, сохранять самозаверяющий сертификат на локальном сервере Linux, а затем использовать этот сертификат для доверия так что вам не нужно устанавливать TLS_REQCERT никогда. Я не уверен, как я могу просмотреть и сохранить самозаверяющий сертификат из командной строки Linux. У меня есть несколько серверов CentOS, которые мы запускаем, и на которых мы должны работать.
Мы будем очень благодарны за любую помощь, которую вы можете предоставить. Заранее спасибо.
Я читал много мест, где говорится об установке переменной TLS_REQCERT в значение никогда; однако меня беспокоят атаки типа «злоумышленник посередине», и я не чувствую себя комфортно, оставляя настройку таким образом.
Вы заслуживаете похвалы как за размышления о безопасности, так и за понимание последствий установки TLS_REQCERT.
Я также прочитал несколько статей, в которых говорится о возможности запрашивать сервер Active Directory из командной строки Linux, просматривать самозаверяющий сертификат, сохранять самозаверяющий сертификат на локальном сервере Linux ...
Вы можете использовать openssl
инструмент для этого. Предполагая, что вы можете получить доступ к Active Directory через LDAP-over-SSL на порт 636, вы можете сделать это:
openssl s_client -connect server.example.com:636 > output < /dev/null
И когда команда завершится, вы обнаружите, что вывод содержит, среди прочего, сертификат в кодировке PEM:
00000003)
---
Certificate chain
0 s:/CN=dc1.example.com
i:/DC=com/DC=example/DC=dc1/CN=example-DC1-CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGjDCCBXSgAwIBAgIKOxasfwAAAAAADDANBgkqhkiG9w0BAQUFADBaMRMwEQYK
...
-----END CERTIFICATE-----
...
Вы можете удалить все до BEGIN CERTIFICATE
линия и все после END CERTIFICATE LINE
и у вас должно быть то, что вы ищете.
Также возможно, что сервер AD не использует самозаверяющий сертификат, а вместо этого использует сертификат, выданный центром сертификации AD. Если это так, может быть проще просто попросить у сотрудников AD сертификат CA.
Я рекомендую иметь в вашей организации выделенный сервер центра сертификации. Вы будете использовать этот сервер для выдачи сертификатов для всех серверов в вашей компании. Чтобы просмотреть информацию из сертификата, ключа или запроса сертификата, вы можете использовать openssl. Видеть: http://www.openssl.org/support/faq.html и http://www.madboa.com/geek/openssl/
Сертификат, выданный для вашего LDAP-сервера или, предпочтительно, корневой сертификат должен быть импортирован в хранилище ключей SSL вашего приложения.