Контекст: производственный сервер с установленным 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
То, что я хотел бы получить, похоже на следующий захват экрана:
Большое спасибо в продвижении любой помощи будет очень желанным и высоко ценят.
С уважением.
Я думаю, что вам не хватает директивы 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>
Надеюсь это поможет,