Назад | Перейти на главную страницу

Как проверить подписанный сертификат?

У меня есть два SSL-сертификата:

Что я пытаюсь сделать прямо сейчас, это просто проверить действительность snipsalonsoftware.com сертификат, так что, когда я пытаюсь проверить app.snipsalonsoftware.com, Я знаю, что получаю содержательный ответ.

Это профессионально подписанный сертификат от Comodo через DreamHost, а не самозаверяющий сертификат. Как я могу проверить цепочку доверия с помощью openssl или какой другой способ?

Вот что я получаю прямо сейчас, когда пытаюсь:

$ openssl verify domain.pem 
domain.pem: /OU=Domain Control Validated/OU=Provided by New Dream Network, LLC/OU=DreamHost Basic SSL/CN=snipsalonsoftware.com
error 20 at 0 depth lookup:unable to get local issuer certificate

Но для меня это вроде как, конечно, вы не можете получить местный сертификат - его нет. Я не понимаю, как я должен проверять профессионально подписанный сертификат.

Обычно это означает, что путь CA по умолчанию OpenSSL не содержит сертификата, подписанного проверяемым вами - обычно это промежуточный сертификат.

Вам нужно будет получить копию промежуточного звена (большинство центров сертификации предоставят его, или вы можете получить его из SSL-соединения, доверие которого работает), и указать на него в своем openssl команда с -CAfile intermediate.pem.

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

Затем используйте openssl verify используя эти сертификаты. Проверьте как -CAfile и -CApath варианты verify(1) команда, чтобы узнать, как.

Вы также можете использовать онлайн-инструмент, например SSL-Checker который графически показывает цепочку доверия, которую представляет ваш сервер, и помогает выяснить, какие сертификаты отсутствуют в цепочке

Вы должны кошка все сертификаты для окончательного CA_Chain.crt:

:~$ cat RootCA.crt IntermediateCert1 IntermediateCert2 > CA_Chain.crt

:~$ openssl verify -CAfile CA_Chain.crt website.crt

(website.crt sign by IntermediateCert2)