недействительный сертификат CA openssl

8

Я настраиваю межсерверный OpenVPN с инфраструктурой PKI и не могу заставить его работать. Я подозреваю, что это что-то в цепочке сертификатов, но я затрудняюсь объяснить, как. У меня есть автономный корневой центр сертификации и иерархия сертификатов. Внешне CA управляются продуктом EJBCA. Наглядно цепочка выглядит так (с измененными именами):

RootCA -> OnlineSubCA -> SubCA1 -> VPNCA

Я подписал сертификат сервера и клиента с CA VPNCA, и у меня есть цепочка сертификатов в этих системах. При отладке OpenVPN я попытался использовать "openssl s_server" и s_client ", что привело меня к мысли, что это цепочка CA. В частности, на сервере:

openssl s_server -cert server.cert -key server.key -CAfile chained.pem -verify 5

и на клиенте

openssl s_client -cert client.cert -key client.key -CAfile chained.pem -verify 5

сервер плюет, между прочим:

depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify error:num=24:invalid CA certificate
verify return:1
depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify error:num=26:unsupported certificate purpose
verify return:1
depth=4 C = CA, O = My Company, CN = RootCA, emailAddress = certs@mycompany.com
verify return:1
depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify return:1
depth=2 CN = SubCA1, O = My Company, C = CA
verify return:1
depth=1 CN = VPNCA
verify return:1
depth=0 C = CA, ST = , L = , O = My Company, OU = , CN = client1.mycompany.com, emailAddress = pki@mycompany.com
verify return:1

и я совершенно не могу объяснить, как и почему это так. OpenVPN также терпит неудачу с подобной ошибкой от клиента:

VERIFY ERROR: depth=3, error=invalid CA certificate: /C=CA/O=My_Company/CN=OnlineSubCA

Я использую OpenVPN 2.2.1 и OpenSSL 1.0.1 в Ubuntu 12.04. Время синхронизировано на обоих.

Я в недоумении о том, как действовать дальше. Любые идеи / предложения будут с благодарностью.

Майкл Харт
источник

Ответы:

16

Это проблема с расширениями X509v3. Современные сертификаты подписываются таким образом, чтобы указывать на одобренное использование этого типа сертификата. Они могут быть отображены путем передачи сертификата openssl x509 -textили указания пути к файлу -in.

В вашем случае эти сообщения об ошибках указывают на то, что указанный вами сертификат не является сертификатом CA. (самая большая подсказка - «неподдерживаемое назначение сертификата»). С помощью приведенной выше команды выведите текстовую информацию о сертификате. Действительный сертификат CA будет выглядеть так:

        X509v3 Basic Constraints:
            CA:TRUE

Сертификат не CA будет отображать это вместо:

        X509v3 Basic Constraints:
            CA:FALSE

Возможно, вы перепутали файлы, это довольно легко сделать при перемещении файлов. openssl x509будет светить увеличительное стекло на содержание реальных сертификатов.

Андрей Б
источник
Это действительно проблема, проверка 2-го сертификата показывает «CA: FALSE». Похоже, что так настроено в EJBCA, что является ошибкой, возможно, мне придется пересоздать его. Спасибо, Андрей!
Майкл Харт
Рад, что это помогло. :)
Андрей Б
7
Кроме того, вы получите 26 / unspupported цель сертификата, если у вас есть «критическое» в качестве основного ограничения, но ваш сертификат не подписан / не доверен одним из законных органов (столкнулся с этой попыткой использовать самоподписанный корневой CA)
Zerkz