Как стать автором
Обновить

Web-сервер с двухуровневой иерархией ЦС. Авторизация по SSL

Время на прочтение11 мин
Количество просмотров4.1K
Всего голосов 12: ↑11 и ↓1+10
Комментарии11

Комментарии 11

Конфигурация для Apache2 и Nginx проста, нам надо только добавить пару строк и прописать путь к сертификату.

Для Апача указанных настроек может быть недостаточно

Возможно (но не обязательно) в конфиг /etc/apache2/sites-available/your_site_name.com.conf надо будет добавить еще

SSLEngine On

Кстати, у меня на Apache2 все попытки настроить доступ через самоподписанный SSL заканчивались провалом, браузеры ни в какую не хотели принимать созданный таким образом Р12 при доступе к сайту, авторизованному через созданные crt. Решилось все созданием pem сертификатов

openssl req -x509 -new -nodes -key ca.key -days 7300 -out ca.pem

и указанием в конфиге апача таких вот параметров

SSLCertificateFile /home/webadmin/certs/ca.pem
SSLCertificateKeyFile /home/webadmin/certs/ca.key
SSLCACertificateFile /home/webadmin/certs/ca.pem

Вот так оно взлетело...

Сделайте все как тут и сработает)

Что касается SSLEngine - выше я вставлял это в пример. И этот параметр подразумевается сам собой т.к. все это делается сразу под https. Будет ли авторизация работать по http не знаю, не пробовал и даже не задумывался об этом. Возможно вы правы в том, что надо было явно указать этот параметр и в пункте включения авторизации.

Не, я не спорю, что прикрутить EasyRSA вместо OpenSSL задача любопытная и вполне решаемая. Просто я описал свой опыт работы в данном направлении, что-то у меня с этим не срослось, а вот на OpenSSL сработало. Так что если у кого то будут те же грабли, есть возможность их решить.

Я в свою очередь попробую на досуге ваш вариант, может и получится, вполне вероятно я там где то кривыми руками что-то не то делал.

Ну вариант с двухуровневой иерархией у меня тоже с 5-ого раза получился, а с одним СА было куда проще. И в первоначальном варианте я тоже использовал не голый Easy-RSA, а вперемежку с openssl.

А что-нибудь готовое с веб интерфейсом для управления клиентскими сертификатами можете посоветовать?

Я не знаю таких. Если только webmin, но может он то, что вам надо или нет - не знаю.

Скажите, что делать? Спасибо.
./revoke_ssl.sh
...
rm: cannot remove '/root/SubCA/pki/issued/dns_name.crt': No such file or directory
rm: cannot remove '/root/SubCA/pki/private/dns_name.*': No such file or directory
DONE!

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

rm ~/$ca/pki/issued/$name_crt.crt
rm ~/$ca/pki/private/$name_crt.*

C macOS ваш метод сработал. Благодарю. Как раз столкнулись с проблемой, когда пользователи мак оси столкнулись с проблемой, связанной с постоянным вводом пароля, после установки ключа.

День добрый. Что-то не взлетает - где-то туплю. Ставлю на ubuntu 18 все машины

  1. делаю первый этап - все норм. Правда RootCA.crt остается в папке /tmp - его в ручную копирую в /cert.

  2. Делаю второй этап - в скрипте меняю "ca=$REPLY" на "ca="easyrca-subca"", чтобы в ручную не писать каждый раз и закомментировал перед ним выбор CA

  3. с третьего только настройки apache2 - остальное не трогаю. при этом он хочет ключ RootCA.crt, который мы копировали с первой машинки на вторую, но не копировали на Web- скопировал

Генерую ключ пользователя скриптом, перекинул, прописал - нет результата. Скипировал RootCA.crt на клиента, установил в доверенные - результат тот-же - ошибка "ERR_SSL_PROTOCOL_ERROR ". Не могу понять что не так. Делаю в первый раз.

  1. Создавая RootCA его сертификат будет в pki/ca.crt

  2. После создаём SubCA и делаем запрос на подпись и подписываем у RootCA. Оба сертификата возвращаем на SubCA. Оба сертификата помещаем в easyrsa-subca/pki/ . Не забываем про символьную ссылку для сертификата SubCA.

  3. Создаём инфраструктуру и запускаем скрипт. Выпускаем ssl сертификат для веб сервера. И помещаем его на сервер. В качестве ssl.crt указываем сертификат в имени которого есть fullchain.crt. Рестартуем веб сервер. Сертификат RootCA устанавливаем на клиентском компьютере в раздел доверенных корневых сертификатов ( как-то так, на винде он второй в списке под папкой личное). Проверяем сайт.

  4. Возвращаемся на SubCA и запускаем скрипт и выпускаем клиентский сертификат. Сертификат с расширением .p12 отправляем на клиентский компьютер. А сами идём на веб сервер.

  5. В конфиге прописываем авторизацию по ssl и указываем сертификат с RootCA. Он будет служить для проверки подписи.

  6. Ещё раз перезапускаем веб.

  7. Идём на клиентский компьютер и устанавливаем сертификат ( можно выбрать автоматический выбор, он станет в папку личное).

  8. Обновляем страницу. Запрашивает сертификат? Выбираем. Есть доступ.

    Вот краткие шаги. Если что-то не сработало, то что-то вы упустили или ошиблись. В вашем комменте например easyrsa-subca, что вы прописали в скрипте, ошибка. Если это так, а сама директория называется, как в Мане у меня. То сертификат и вовсе не должен выпуститься скриптом. Если делали все вручную, то не забывайте про полную цепочку сертификатов - RootCA на клиентском (но это конечно не обязательно), а server.crt и SubCA.crt нужно объединить в один именно в данной последовательности и это обязательно!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий