Во-первых, я бы Предлагаем избегать одновременного использования SSLCACertificatePath
и SSLCACertificateFile
. SSLCACertificatePath
используется для указания каталога, содержащего несколько файлов, по одному для каждого сертификата CA, которому вы доверяете. SSLCACertificateFile
используется для указания на один файл, представляющий собой объединение всех сертификатов CA, которым вы доверяете. На самом деле не имеет смысла указывать SSLCACertificatePath
на каталог, который также содержит закрытые ключи (хотя я не уверен, что это все равно вызовет проблемы).
openssl x509 -text -noout -in filename.pem
(Это должно отобразить достаточно информации о сертификате.)
РЕДАКТИРОВАТЬ:
На всякий случай, если возникла проблема с вашими сертификатами, вы можете попробовать эти тестовые сертификаты:
(Все пароли - testtest
.)
Вы можете импортировать testclient.p12
в свой браузер. cacert.pem
- это сертификат CA в формате PEM, а localhost-cert.pem
- это сертификат сервера для localhost
(поэтому он предназначен для тестирования с компьютера сам). localhost-key.pem
- закрытый ключ для сертификата сервера. Вы можете снять защиту, используя:
openssl rsa -in localhost-key.pem -out localhost-key-unprotected.pem
Возможно, вам потребуется доверять cacert.
У меня была такая же проблема (под Nginx). Решение заключалось в том, чтобы сделать общее имя моего клиента отличным от общего имени сертификатов сервера. Первоначально я думал, что мой сертификат CN должен соответствовать FQDN сертификата сервера ..
EX:
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:Minnesota
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCo
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:Ryan Pendergast
Email Address []:me@gmail.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Signature ok
subject=/C=US/ST=Minnesota/O=MyCo/CN=Ryan Pendergast/emailAddress=me@gmail.com
У меня тоже была эта проблема с nginx, как и в случае с @rynop, решение оказалось правильным именованием.
В моем случае обеспечение организации / общих имен для клиентского центра сертификации и сертификаты клиента были разными.
Если имена совпадают, nginx / openssl видит самозаверяющий сертификат вместо сертификата, подписанного центром сертификации.
Следующее руководство было полезно при настройке аутентификации сертификата клиента. с nginx и помогает использовать разные имена для CA и сертификата:
https://gist.github.com/mtigas/952344#convert-client-key-to-combined-pem