проверка подлинности клиентского сертификата не работает с chrome и сервером apache2 - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь использовать клиентские сертификаты для ограничения безопасного доступа к веб-серверу apache2. Однако после установки Google Chrome возвращает ошибку ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED.

Сначала я настроил CA для веб-сервера, создав ключ CA и файл PEM X509:

openssl genrsa -out CA.key 2048
openssl req -x509 -new -nodes -key CA.key -days 7300 -out CA.pem

У меня уже есть существующий сертификат для веб-сайта, установленный в apache2 для связи https, выделенный доверенной третьей стороной. Ниже приведен параметр apache2 conf для этого веб-сайта, где я включил SSLCACertificateFile для сгенерированного выше сертификата, директивы SSLOptions, SSLVerifyClient и SSLVerfiyDepth:

<IfModule mod_ssl.c>
        <VirtualHost *:443>
                ServerName site.aname.com
                ServerAdmin webmaster@localhost
                DocumentRoot /var/www/html/site
                <Directory /var/www/html/site>
                        Options FollowSymLinks
                        AllowOverride All
                        Require all granted
                        SSLOptions +StdEnvVars
                        SSLVerifyClient require
                        SSLVerifyDepth 1
                </Directory>
                LogLevel debug
                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined
                SSLCACertificateFile /etc/apache2/ssl/site/CA.pem
                SSLCertificateFile /etc/apache2/ssl/site/fullchain.pem
                SSLCertificateKeyFile /etc/apache2/ssl/site/privkey.pem
                Include /etc/apache2/ssl/site/options-ssl-apache.conf
        </VirtualHost>
</IfModule>

Это завершает настройку веб-сервера и тестирует без сертификата клиента и получает ожидаемую ошибку.

Затем я генерирую клиентский сертификат и подписываюсь с CA, а затем упаковываю в pkcs12 с закрытым ключом следующее:

GENERATE:

openssl genrsa -out user.key 2028
openssl req -new -key user.key -out user.csr

ПОДПИСАТЬСЯ С:

openssl x509 -sha256 -req -in user.csr -out user.crt -CA CA.pem -CAkey CA.key -CAcreateserial -days 1095

СОЗДАТЬ PKCS12:

openssl pkcs12 -export -out user.pfx -inkey user.key -in user.crt

Результирующий файл user.pfx затем устанавливается на пользовательские машины с Chrome.

При попытке подключения chrome запрашивает ключ, который был выбран с результатом ошибки ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED.

Версия Chrome под Windows 10: Версия 74.0.3729.169 (официальная сборка) (64-разрядная версия)

Обновление: Я могу успешно подключиться с помощью curl с другого сервера Linux, используя:

curl --cert user.crt --key user.key --pass password https://site.aname.com/

однако, то же самое из командной строки Windows 10 приводит к: curl: (35) schannel: next InitializeSecurityContext не выполнен: неизвестная ошибка (0x80090027) - неверный параметр

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...