У меня есть сервер Nginx, который устанавливает аутентификацию сертификата клиента и отлично работает, вот эта часть, которую я пишу для настроенного SSL на Nginx.
server {
listen 80;
listen 443;
ssl on;
server_name ssl-api.mywebsite.com;
ssl_certificate /etc/nginx/certs/verify-ssl-api-server.crt;
ssl_certificate_key /etc/nginx/certs/verify-ssl-api-server.key;
ssl_client_certificate /etc/nginx/certs/verify-ssl-api-rootCa.crt;
ssl_verify_client on;
Когда я использую браузер для доступа к этому, появляется сообщение об ошибке, подобное этой картинке.
И я добавляю свой клиентский сертификат в Firefox и предоставляю пароль для импорта clientcert.p12
Появляется диалоговое окно подтверждения, мне просто нужно нажать ОК, и все работает нормально.
Теперь я хочу, чтобы это работало на SSL от CLoudFlare, но я не знаю, как это сделать. Я пытался Подтвержденные исходные запросы но ему не нужно отправлять сертификат клиента, так как я могу это сделать с помощью CloudFlare?
Попробуйте следующее. В вашей строке listen 443 вы не сказали ssl, я не знаю, будет ли он это делать по умолчанию или нет. Вы не должны помещать http2 туда, если ваша версия Nginx не поддерживает его.
listen 443 ssl http2;
ssl_certificate /var/lib/certs/fullchain;
ssl_certificate_key /var/lib/certs/privkey;
# Set up preferred protocols and ciphers. TLS1.2 is required for HTTP/2
# Change according to your needs
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
# This is a cache for SSL connections, it's optional but helps performance.
ssl_session_cache shared:SSL:2m;
ssl_session_timeout 60m;
Сделайте это правильно в Chrome, Firefox и IE. Возможно, вам понадобится добавить промежуточные сертификаты, чтобы Firefox заработал, это сложнее. Как только вы это сделаете, CloudFlare должен «просто работать».
Опубликуйте свои результаты, успехи или дополнительные вопросы.