Прежде всего, я знаю, что есть много связанных вопросов, но похоже, что большинство из них связано с отсутствием сертификатов эмитента на сервере.
Я слежу это руководство чтобы включить аутентификацию клиента с помощью SSL, но я не могу заставить Apache принять сертификат клиента. При ближайшем рассмотрении журналы Apache заполняются Certificate Verification: Error (20): unable to get local issuer certificate
Сообщения.
Я использую сертификат, который мне предоставил ЦС, и мой закрытый ключ в качестве ЦС.
Для дальнейшей диагностики проблемы я запустил openssl verify -CAfile ca.cert client_signed.crt
и получите ту же ошибку.
Решаю переделать все шаги. Однако выполнение всего из командной строки по-прежнему возвращает ту же ошибку.
$ openssl x509 -req -days 360 -in client.csr -CA ca.cert -CAkey ca.key -CAcreateserial -out client_signed.crt
Signature ok
subject= ...
Getting CA Private Key
Enter pass phrase for server.key:
[I type in the password and press ENTER]
$ openssl verify -CAfile ca.cert client_signed.crt
[ .. ]
error 20 at 0 depth lookup:unable to get local issuer certificate
$ ls ca.cert
ca.cert
Чтобы полностью диагностировать проблему, я решил сгенерировать и самостоятельно подписать сертификат, который будет использоваться в качестве CA для подписи сертификата клиента. К моему удивлению, это сработало безупречно. На самом деле это первый шаг в руководстве, которое я связал.
Очевидно, проблема связана с моим сертификатом. Я подозреваю, что должно быть что-то связанное с цепочкой доверия, поскольку у меня нет сертификата ЦС, подписавшего мой собственный сертификат. Я пытался их скачать со своего сайта но я даже не могу проверить свой сертификат.
$ ls /path/to/downloaded/files/
acrn.cer ancca.crt CorreoUruguayoCA.crt CorreoUruguayoRootCA.crt
$ openssl verify -CApath /path/to/downloaded/files/ my.cert
error 20 at 0 depth lookup:unable to get local issuer certificate
Любая помощь будет оценена.
Изменить: использование утилиты «Просмотр файла» в Ubuntu указывает, что мой сертификат был Verified by: Correo Uruguayo - CA
. Я не уверен, почему openssl не может это проверить.