Я создаю центр сертификации openssl для интрасети.
у меня есть root.crt
, intermediate.crt
который подписан корнем, и server.crt
который подписан промежуточным звеном.
Я могу проверить промежуточное значение на корень
#> openssl verify -CAfile root.crt intermediate.crt && echo ok
ok
В Ubuntu я могу установить корневой сертификат
#> mv root.crt /usr/local/share/ca-certificates/my-root.crt
#> update-ca-certificates
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
done.
Но если я попытаюсь проверить сервер на промежуточном уровне, это не удастся.
#> openssl verify -CAfile intermediate.crt server.crt && echo ok
error 2 at 1 depth lookup:unable to get issuer certificate
Я думаю, это означает, что он не может проверить всю цепочку server.crt -> intermediate.crt -> my-root.crt
.
Я проверил сертификаты вручную с openssl x509 -noout -text
и выглядят они нормально: Issuer
для server.crt
соответствует теме промежуточного сертификата, для двух других он соответствует корню, а даты находятся в правильном диапазоне.
Цель состоит в том, чтобы распространить серверные и промежуточные сертификаты в приложениях, а также установить глобальный корневой сертификат. Клянусь, это сработало некоторое время назад, так что я упустил?