Добрый день! Извиняюсь, что не по теме Django, но точно знаю, что здесь сидит большое количество специалистов и мб кто то поможет советом. Необходимо заставить работать HTTPS на Apache в локальной сети (с самоподписным сертификатом).
Что сделано:
По статье с Хабра (https://habr.com/post/192446/) были созданы самоподписные сертификаты и ключи). На сервере подключен модуль mod_ssl.so, а так же выполнены настройки: SSLEngine On SSLCertificateFile «путь до/сертификата.crt» SSLCertificateKeyFile «путь до/ключа.key» SSLCACertificateFile «путь до/CA-сертификата.crt» (пробовал с этой опцией и без)
<Location /> SSLRequireSSL On SSLVerifyClient optional SSLVerifyDepth 1 (пробовал различные значения...) SSLOptions +StdEnvVars +StrictRequire </Location> Запускаю апач - все ок, ошибок нет. На клиенте импортирую сертификат CA (пробовал так же выписывать для юзеров отдельный сертификат по аналогии с сервером и импортировать его - не помогло) в доверенные корневые центры + перезагружаю браузер. Захожу на сайт - https работает, шифрование идет (проверял снифером), если сертификат удалить у пользователя - браузер сразу же начинает ругаться на то, что нет доверия к сертификату и пускает на страницу с перечеркнутым HTTPS (поидее так и должно быть). Тут я подумал, что было бы отлично, чтобы пользователи без сертификата вообще не могли использовать ресурс (либо через mod_rewrite в случае ошибок ssl редиректились куда-либо... пока надо реализовать хотябы недоступность ресурса, в случае когда у юзера нет сертификата), для этого надо применить директиву SSLVerifyClient require, поменял конфиг + перезапустил апач. На клиенте проверил, что сертификат есть в контейнере, захожу на сайт.... а он сразу выходит в ошибку ERR_SSL_PROTOCOL_ERROR.
Кусок лога ssl:
*[Wed Sep 12 16:12:11.074234 2018] [ssl:error] [pid 4508:tid 944] [client 10.32.140.66:49330] AH02261: Re-negotiation handshake failed [Wed Sep 12 16:12:11.074234 2018] [ssl:error] [pid 4508:tid 944] SSL Library Error: error:140890C7:SSL routines:ssl3_get_client_certificate:peer did not return a certificate — No CAs known to server for verification? AH02008: SSL library error 1 in handshake SSL Library Error: error:140800FF:SSL routines:ssl3_accept:unknown state*
Отсюда вопрос - почему https нормально работает (реально шифрует и не ругается в браузере) при использовании SSLVerifyClient optional, а не работает с флагом require, и как сделать так, чтобы работал с require? Большое спасибо за консультации!