Авторизация с использованием клиентских сертификатов является одним из методов обеспечения безопасности доступа к сайту. При таком способе аутентификации, пользователь предоставляет не только логин и пароль, но и электронный сертификат, подтверждающий его личность. Это повышает уровень защиты информации и предотвращает несанкционированный доступ к ресурсу. Клиентские сертификаты могут использоваться как для входа на сайт, так и для подписи документов или проведения сделок онлайн.
Создадим каталог, в котором будем проводить работы по выпуску и хранению необходимых сертификатов:
# mkdir /etc/ssl/atest
Перейдем в наш каталог:
# cd /etc/ssl/atest
Генерируем ключ для корневого сертификата сервера:
# openssl genrsa -out root.key 2048

Генерируем запрос для сертификата сервера:
# openssl req -new -key root.key -out root.csr

Теперь сформируем корневой сертификат сервера. Его мы будем использовать в дальнейшем для подписи клиентских сертификатов, при помощи которых у нас будет происходить авторизация на сайте.
# openssl x509 -req -days 3650 -in root.csr -signkey root.key -out root.pem

Сгенерируем ключ для самоподписного сертификат для нашего сайта. Его мы будем использовать для настройки SSL. В нашем примере, в качестве веб-сервера выступит Apache.
# openssl genrsa -out server.key 2048
Генеруем запрос для самоподписного сертификата сайта:
# openssl req -new -key server.key -out server.csr
Теперь подпишем сертификат сайта нашим ключом сервера и получим цепочку сертификатов для сайта:
# openssl x509 -req -in server.csr -CA root.pem -CAkey root.key -CAcreateserial -out server.pem -days 365
Приступим к выпуску сертификатов для авторизации со стороны клиента:
[root@adminapi ppp.com]# openssl genrsa -out client1.key 2048
[root@adminapi ppp.com]# openssl req -new -key client1.key -out client1.csr
[root@adminapi ppp.com]# openssl x509 -req -in client1.csr -CA root.pem -CAkey root.key -CAcreateserial -out client1.pem -days 365
Подготовим наш сертификат для экспорта в браузер клиентов:
[root@adminapi ppp.com]# openssl pkcs12 -export -in client1.pem -inkey client1.key -certfile root.pem -out atest_crt1.p12
Скачиваем себе наш полученный файл для импорта и авторизации браузер с сервера atest_crt1.p12
Для настройки вер-сервера Apache по сертификатам указываем пути к нашим самоподписным сертификатам, а также к нашему корневому сертификату, которым мы подписывали наши ключи клиентов:
SSLCertificateFile /etc/ssl/atest/server.pem
SSLCertificateKeyFile /etc/ssl/atest/server.key
SSLCACertificateFile /etc/ssl/atest/root.pem
В нашем примере нам необходимо ограничить доступ к каталогу administrator для этого используем параметр:
SSLVerifyClient require
В результате наш конфиг может иметь примерно такое содержание:
<VirtualHost *:443>
ServerName atest.site
DocumentRoot "/var/www/atest"
ErrorLog logs/error.log
TransferLog logs/access.log
LogLevel warn
SSLEngine on
SSLCertificateFile /etc/ssl/atest/server.pem
SSLCertificateKeyFile /etc/ssl/atest/server.key
SSLCACertificateFile /etc/ssl/atest/root.pem
<Location />
</Location>
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/atest/administrator">
SSLRenegBufferSize 10486000
SSLVerifyClient require
</Directory>
</VirtualHost>
Таким образом, использование клиентских сертификатов для авторизации на сайте обеспечивает дополнительный уровень безопасности, защищая данные пользователей от несанкционированного доступа. Это удобный и надежный способ идентификации пользователей и обеспечения конфиденциальности персональной информации. Внедрение такой системы авторизации помогает защитить как сам сайт, так и его пользователей от потенциальных угроз и атак.
Остались вопросы?
Свяжитесь с нами, мы с удовольствием Вас проконсультируем:
info@support.by
Понравилась статья? Хочешь получать еще больше полезного контента? Подписывайся на наш блог, будь в курсе последних новостей и интересных материалов из области хостинга и не только!