Загрузка и проверка цепочки сертификатов

Как вы написали с ничем перед символом перенаправления > :

>filename.txt

буквально перенаправляет ничего в имя файла. txt . Обычно это делается для очистки / стирания содержимого текстового файла. Если filename.txt еще не существует, он будет создан.

5
02.11.2017, 03:23
4 ответа

Вы должны поместить сертификат, который вы хотите проверить, в один файл, а цепочку в другой:

openssl verify -CAfile chain.pem mycert.pem

Также важно (конечно), чтобы openssl знал, как найти корневой сертификат, если он не включен в chain.pem. Если вам нужно это сделать (если вы используете свой собственный CA), вы можете указать альтернативный каталог, в котором он будет искаться с помощью -CApath

1
27.01.2020, 20:42

Итак, я нашел ответ, OpenSSL проверяет только первый сертификат в файле. Это означает, что если у вас есть действительная цепочка, вы должны проверять только последний сертификат.

1
27.01.2020, 20:42

El problema está en la salida del comando -showcerts:, solo tiene su certificado y el certificado que lo firmó -y probablemente sea un certificado intermedio, pero no la cadena completa. Para tener la declaración OK, debe:

  • Coloque su certificado (primero -BEGIN END-bloque )en el archivomycert.crt
  • Ponga el otro (s )en el archivoCAcerts.crt
  • Verifique con openssh -text -in CAcerts.crtpara buscar una CA raíz que haya firmado esto y agréguela a CAfile.crt.
  • Tal vez repita esto si CA todavía no es una raíz (auto -firmado ).
  • Luego verifique su certificado:openssl verify -CAfile CAcerts.crt mycert.crt

Nota :Puede obtener los conocidos certificados de CA de la tienda de Firefox utilizando la GUI de preferencias (ver certificados y luego exportar ), o en línea de comando con certutil, que se encuentra en su directorio de perfil de Firefox. Por ejemplo:

$ find $HOME/.mozilla/firefox -name cert8.db # point for example to abcdef.default directory
$ certutil -a -L -d $HOME/.mozilla/firefox/abcdef.default/ -n "Let's Encrypt` Authority X3"
0
27.01.2020, 20:42

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


ПРЕДУПРЕЖДЕНИЕ :проверьте отрицательные значения

Пожалуйста, проверьте отрицательные случаи, то есть убедитесь, что то, что ваш тест должен определить как недействительное, правильно определяется как недействительное. Вы можете сделать это с помощьюhttps://badssl.com/или чего-то, что вы сделаете сами. Если вы не знаете наверняка, что отрицательные случаи не пройдут все, что вы тестируете, то тест мало чем поможет.


Для проверки надежности цепочки:

openssl s_client -showcerts -connect example.com:443 </dev/null 2>/dev/null \
    | sed -ne '/-BEGIN/,/-END/p' \
    | certtool --verify

Только проверка целостности цепочки -, но не доверие:

openssl s_client -showcerts -connect example.com:443 </dev/null 2>/dev/null \
    | sed -ne '/-BEGIN/,/-END/p' \
    | certtool --verify-chain

Пример доверенной цепочки:

$ openssl s_client -showcerts -connect example.com:443 </dev/null 2>/dev/null | sed -ne '/-BEGIN/,/-END/p' | certtool --verify
Loaded system trust (154 CAs available)
    Subject: CN=DigiCert SHA2 Secure Server CA,O=DigiCert Inc,C=US
    Issuer: CN=DigiCert Global Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US
    Signature algorithm: RSA-SHA256
    Output: Not verified. The certificate is NOT trusted. The certificate issuer is unknown. 

    Subject: CN=DigiCert SHA2 Secure Server CA,O=DigiCert Inc,C=US
    Issuer: CN=DigiCert Global Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US
    Signature algorithm: RSA-SHA256
    Output: Not verified. The certificate is NOT trusted. The certificate issuer is unknown. 

    Subject: CN=DigiCert SHA2 Secure Server CA,O=DigiCert Inc,C=US
    Issuer: CN=DigiCert Global Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US
    Checked against: CN=DigiCert Global Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US
    Signature algorithm: RSA-SHA256
    Output: Verified. The certificate is trusted. 

    Subject: CN=www.example.org,OU=Technology,O=Internet Corporation for Assigned Names and Numbers,L=Los Angeles,ST=California,C=US
    Issuer: CN=DigiCert SHA2 Secure Server CA,O=DigiCert Inc,C=US
    Checked against: CN=DigiCert SHA2 Secure Server CA,O=DigiCert Inc,C=US
    Signature algorithm: RSA-SHA256
    Output: Verified. The certificate is trusted. 

Chain verification output: Verified. The certificate is trusted. 

Пример недоверенной цепочки:

$ openssl s_client -showcerts -connect untrusted-root.badssl.com:443 </dev/null 2>/dev/null | sed -ne '/-BEGIN/,/-END/p' | certtool --verify
Loaded system trust (154 CAs available)
    Subject: CN=*.badssl.com,O=BadSSL,L=San Francisco,ST=California,C=US
    Issuer: CN=BadSSL Untrusted Root Certificate Authority,O=BadSSL,L=San Francisco,ST=California,C=US
    Signature algorithm: RSA-SHA256
    Output: Not verified. The certificate is NOT trusted. The certificate issuer is unknown. 

    Subject: CN=*.badssl.com,O=BadSSL,L=San Francisco,ST=California,C=US
    Issuer: CN=BadSSL Untrusted Root Certificate Authority,O=BadSSL,L=San Francisco,ST=California,C=US
    Signature algorithm: RSA-SHA256
    Output: Not verified. The certificate is NOT trusted. The certificate issuer is unknown. 

    Subject: CN=*.badssl.com,O=BadSSL,L=San Francisco,ST=California,C=US
    Issuer: CN=BadSSL Untrusted Root Certificate Authority,O=BadSSL,L=San Francisco,ST=California,C=US
    Signature algorithm: RSA-SHA256
    Output: Not verified. The certificate is NOT trusted. The certificate issuer is unknown. 

Chain verification output: Not verified. The certificate is NOT trusted. The certificate issuer is unknown. 

Проверка, тем не менее, действительна ли ненадежная цепочка:

$ openssl s_client -showcerts -connect untrusted-root.badssl.com:443 </dev/null 2>/dev/null | sed -ne '/-BEGIN/,/-END/p' | certtool --verify-chain
    Subject: CN=*.badssl.com,O=BadSSL,L=San Francisco,ST=California,C=US
    Issuer: CN=BadSSL Untrusted Root Certificate Authority,O=BadSSL,L=San Francisco,ST=California,C=US
    Checked against: CN=BadSSL Untrusted Root Certificate Authority,O=BadSSL,L=San Francisco,ST=California,C=US
    Signature algorithm: RSA-SHA256
    Output: Verified. The certificate is trusted. 

Chain verification output: Verified. The certificate is trusted. 
1
29.01.2020, 10:20

Теги

Похожие вопросы