Сертификаты в PHP. Двухсторонняя аутентификация ssl. апаш

0

Контекст: производственный сервер с установленным SSL. Запуск сервера Apache. PHP.

Проблема: для определенного URL-адреса (например: www.domain.com/whatever/edit/*) я хочу попросить пользователей использовать их сертификат для аутентификации для конкретной задачи.

Я прочитал, что этот способ аутентификации называется двухсторонней аутентификацией SSL. Я не знаю, прав я или нет.

То, что я пробовал в конфигурации сервера, следующее:

<VirtualHost _default_:433>

ServerAdmin webmaster@localhost

DocumentRoot /Applications/MAMP/htdocs/smartdataprotection/web/

        Options FollowSymLinks

        Options Indexes FollowSymLinks MultiViews


LogLevel warn
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/ssl_access.log combined


SSLEngine on
SSLCertificateFile    /Applications/MAMP/htdocs/certificates/server.cer
SSLCertificateKeyFile /Applications/MAMP/htdocs/certificates/server.key
SSLOptions +StdEnvVars 

# Below for 2 way ssl
SSLVerifyClient require
SSLVerifyDepth 10
SSLCACertificateFile /Applications/MAMP/htdocs/certificates/ca.cer

То, что я хотел бы получить, похоже на следующий захват экрана: Изображение 174551

Большое спасибо в продвижении любой помощи будет очень желанным и высоко ценят.

С уважением.

Теги:
authentication
ssl
certificate

1 ответ

2
Лучший ответ

Я думаю, что вам не хватает директивы SSLCipherSuite. В документации apache:

Эта сложная директива использует разделенную на двоеточие строку шифрования, состоящую из спецификаций шифрования OpenSSL для настройки Cipher Suite, клиенту разрешено вести переговоры на этапе подтверждения SSL.

Также, как правило, вы хотите войти на сайт с сертификатом в определенном месте, а не непосредственно на www.yourdomain.com, например, в ссылке на кнопку, чтобы wwww.yourdomain.com/yourApp/loginCert на wwww.yourdomain.com/yourApp/loginCert поэтому вам нужно настроить <Location> внутри <VirtualHost>.

Наконец, проверьте файл, указанный в директиве SSLCACertificateFile, этот файл представляет собой конкатенацию сертификатов CA в формате PEM, который выдает сертификаты, разрешенные для входа на ваш сайт, если ваш сертификат не выдается одним из центров сертификации внутри этого файла, они будут не отображаться в всплывающем окне браузера.

Конфигурация может выглядеть так:

<VirtualHost _default_:433>
...
  <Location /yourApp/loginCert>

    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCACertificateFile conf/trustedCA.cer
    SSLVerifyClient required
    SSLVerifyDepth 10
    SSLOptions +StdEnvVars +ExportCertData +OptRenegotiate

  </Location>   

Надеюсь это поможет,

Ещё вопросы

Сообщество Overcoder
Наверх
Меню