У меня проблема с настройкой Apache 2.4.29 в Windows для аутентификации клиента с работающим респондентом OCSP. Аутентификация клиента работает нормально, когда респондент OCSP выключен. Я также могу убедиться, что статус сертификата моего клиента является «хорошим», когда я вручную использую OpenSSL для отправки запроса ответчику OCSP. Это проблема только при использовании в Apache ...
Центр сертификации (я действую как собственный центр сертификации):
Корневой ЦС> Промежуточный ЦС
Промежуточный ЦС> сертификат клиента 1
Промежуточный ЦС> Сертификат подписи OCSP
Файлы сертификатов
ca-chain.cert.pem (сертификаты корневого и промежуточного ЦС)
Intermediate.cert.pem (Сертификат Промежуточного ЦС)
ocsp.mydomain.com.cert.pem (сертификат подписи OCSP)
client1.cert.pem (сертификат клиента)
Настройка Windows
- Сертификаты корневого ЦС и промежуточного ЦС импортируются в хранилища «Доверенные корневые центры сертификации» и «Промежуточные центры сертификации» соответственно вместе с их закрытым ключом (импортированным как .pfx).
- Сертификат клиента импортируется в «Личное» хранилище сертификатов вместе с его закрытым ключом (импортированным как .pfx).
Сервер ответа OCSP
openssl ocsp -port ocsp.mydomain.com:2560 -text -sha256 \
-index intermediate/index.txt \
-CA intermediate/certs/ca-chain.cert.pem \
-rkey intermediate/private/ocsp.mydomain.com.key.pem \
-rsigner intermediate/certs/ocsp.mydomain.com.cert.pem
Ручной запрос OCSP (просто чтобы убедиться, что все настроено прямо за пределами Apache)
Запрос
openssl ocsp -CAfile intermediate/certs/ca-chain.cert.pem \ -url http://ocsp.mydomain.com:2560 -resp_text \ -issuer intermediate/certs/intermediate.cert.pem \ -cert intermediate/certs/client1.cert.pem
Ответ (... представляет собой исключенный подробный вывод, которого нет в ответе)
... Certificate ID: ... Issuer Key Hash: 6FBE86C0DE4500EE4945D1ECC3E41F9DACF5CEEC ... ... Response verify OK intermediate/certs/client1.cert.pem: good
«Хэш ключа эмитента» выше соответствует сертификату клиента «Идентификатор ключа центра сертификации» в моем «личном» хранилище сертификатов, все выглядит хорошо.
Настройка Apache
SSLVerifyClient require
SSLVerifyDepth 10
SSLOCSPEnable on
SSLOCSPDefaultResponder "http://ocsp.mydomain.com:2560"
SSLCACertificateFile "${SRVROOT}/conf/ssl/ca-chain.cert.pem"
Ошибка Apache
Ошибка библиотеки: OCSP_basic_verify: корневой CA не является доверенным (информация журнала ниже)
1973: connecting to OCSP responder 'ocsp.mydomain.com:2560'
1975: sending request to OCSP responder
AH02275: Certificate Verification, depth 2, CRL checking mode: none (0) [subject: CN=Generic Code Root CA,O=Generic Code,ST=New York,C=US / issuer: CN=Generic Code Root CA,O=Generic Code,ST=New York,C=US / serial: B0992B306BCDD3BD / notbefore: Mar 10 21:09:10 2018 GMT / notafter: Mar 5 21:09:10 2038 GMT]
AH02275: Certificate Verification, depth 1, CRL checking mode: none (0) [subject: CN=Generic Code Intermediate CA,O=Generic Code,ST=New York,C=US / issuer: CN=Generic Code Root CA,O=Generic Code,ST=New York,C=US / serial: 1000 / notbefore: Mar 10 21:20:32 2018 GMT / notafter: Mar 7 21:20:32 2028 GMT]
_util_ocsp.c(96):1973: connecting to OCSP responder 'ocsp.mydomain.com:2560'
_util_ocsp.c(124):1975: sending request to OCSP responder
_util_ocsp.c(234): 1981: OCSP response header: Content-type: application/ocsp-response
_util_ocsp.c(234): 1981: OCSP response header: Content-Length: 2270
_util_ocsp.c(282): 1987: OCSP response: got 2270 bytes, 2270 total
1925: failed to verify the OCSP response
Library Error: error:27069070:OCSP routines:OCSP_basic_verify:root ca not trusted
AH02276: Certificate Verification: Error (50): application verification failure [subject: CN=Generic Code Intermediate CA,O=Generic Code,ST=New York,C=US / issuer: CN=Generic Code Root CA,O=Generic Code,ST=New York,C=US / serial: 1000 / notbefore: Mar 10 21:20:32 2018 GMT / notafter: Mar 7 21:20:32 2028 GMT]
2008: library error 1 in handshake (server localhost:443)
Library Error: error:14089086:SSL routines:ssl3_get_client_certificate:certificate verify failed
1998: Connection closed to child 38 with abortive shutdown (server localhost:443)
Ответ сервера ответчика OCSP при обнаружении ошибки Apache
Ответ (... представляет собой исключенный подробный вывод, которого нет в ответе)
... Certificate ID: ... Issuer Key Hash: 79D4440D1471385397B194EF1038CEEEEFBBAC24 ... Cert Status: unknown ...
«Хэш ключа эмитента» выше соответствует идентификатору ключа центра сертификации корневого ЦС в моем хранилище сертификатов «Доверенные корневые центры сертификации», WTF? Почему?
Может ли кто-нибудь увидеть что-то неправильное в том, что я сделал, или узнать, почему это не работает?