Как я могу проверить сертификаты SSL на командной строке?

при компиляции приложения, можно добавить, что его исполнимый путь в Вас СОЕДИНЯЕТ огибающую переменную каналом. это не повлияет на других пользователей.

53
07.07.2011, 18:07
4 ответа

Принятие Ваших сертификатов находится в формате PEM, можно сделать:

openssl verify cert.pem

Если Ваш "пакет CA" является файлом, содержащим дополнительные промежуточные сертификаты в формате PEM:

openssl verify -untrusted ca-bundle cert.pem

Если Ваш openssl не установлен до автоматически использования установленный набор корневых сертификатов (например, в /etc/ssl/certs), затем можно использовать -CApath или -CAfile указывать Приблизительно.

61
27.01.2020, 19:33
  • 1
    При Предупреждении openssl проверяют, что команда является более разрешающей, чем Вы могли бы ожидать! По умолчанию, в дополнение к проверке данного CAfile, это также проверяет на любую АВАРИЮ соответствия в каталоге сертификатов системы, например,/etc/ssl/certs. Чтобы предотвратить это поведение и удостовериться, Вы проверяете по своему конкретному сертификату CA, данному CAfile, необходимо также передать опцию-CApath с несуществующим каталогом, например: openssl проверяют - подробное Предупреждение-CApath nosuchdir-CAfile cacert.pem server.crt –  DSimon 20.01.2016, 21:35
  • 2
    Один дальнейший протест: Если Вы используете -CApath nosuchdir затем комбинация server.crt и cacert.pem должна включать корневой CA; если openssl может только работать до промежуточного CA с теми файлами затем, он будет жаловаться. –  DSimon 21.01.2016, 18:32

Для пользователей OS X: для копирования вставки с помощью мыши = a используйте alt вместо Shift для выбора текста. Затем cmd-c и cmd-v работают так, как ожидалось.

Нашел этот ответ здесь https://stackoverflow.com/a/4608387/671639 после большого количества гуглинга.

-121--8264-

Либо Start + D , либо Ctrl + Alt + D будет работать для минимизации

Для Ubuntu Ctrl + Super + D является ключом по умолчанию для 'Show Desktop'

Для Linux Mint в среде KDE ярлыком по умолчанию для этого же параметра является Ctrl + Alt + D .

Полный список приведен в разделе Сочетания клавиш для ссылки KDE Desktop .

-121--35677-

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

openssl verify -verbose -x509_strict -CAfile ca.pem -CApath nosuchdir cert_chain.pem

Это не требует установки CA где-либо.

Для получения дополнительной информации см. https://stackoverflow.com/questions/20409534/how-does-an-ssl-certificate-chain-bundle-work .

19
27.01.2020, 19:33

Расширение приведенных выше ответов.

Если промежуточные сертификаты находятся в отдельном файле, например, в postfix и apache, вы все равно можете проверить цепочку в командной строке.

Конечная цель :Проверить все сертификаты в цепочке:

  1. Ввод должен быть субдоменом, промежуточным, корневым
  2. Может быть один файл или несколько файлов, если порядок правильный
  3. Будут проверены все сертификаты, начиная с корневого, затем промежуточные (s ), затем субдомен последний
#!/bin/bash
# check certificate chain
# Relies on bash

# Input the domain, intermediate and root - if multiple intermediates they have to be
# ordered in sequence "intermediate1 --> intermediateN --> root"
cat "$@" | \
    # Insert a single "non-base64" char to split / get to the certificates
    sed '/BEGIN/i@' | \
    # reverse the order to get to the root cert first, etc
    tac | \
    # Read the certificates one by one
    while read -d"@" CERT
    do
        # Remember to reverse the certificate again
        C_CERT=$(echo "$CERT" | tac)
        # Grab the Common Name for the output
        CN=$(echo "$C_CERT" | openssl x509 -noout -subject | sed 's/^.*CN=//')
        if [ -z "$CERTS" ]
        then
            # The root certificate is only verified against itself
            RET=$(echo "${C_CERT}" | openssl verify -verbose -CApath /no-such-dir -x509_strict 2>&1)
        else
            # Verify subsequent certificates agains the root, then root/intermediate(s)
            RET=$(echo "${C_CERT}" | openssl verify -verbose -CAfile <(echo -e "$CERTS") -CApath /no-such-dir -x509_strict 2>&1)
        fi
        # Save certificates as we progress, to be used in CAfile
        CERTS="${CERTS}\n${C_CERT}"
        echo "$RET - CN $CN"
    done

Пример вывода:

#./check-cert.sh my-domain.crt intermediate-and-root.crt
stdin: OK - CN Root
stdin: OK - CN Intermediate
stdin: OK - CN example.com

#./check-cert.sh my-domain-error.crt intermediate-and-root.crt
stdin: OK - Root
stdin: OK - Intermediate
stdin: C =... CN = example.com, serialNumber = 000000000
error 20 at 0 depth lookup:unable to get local issuer certificate - CN example.com/serialNumber=000000000

Исходный ответ -неправильный

Это был первоначальный ответ, и он неверен. Это будет только проверять первый сертификат в выходных файлах /, поэтому цепочка никогда не проверяется. Oneliners иногда заставляет вас споткнуться и упасть...

Сохраню для справки. -Надеюсь, кто-нибудь извлечет урок из этой ошибки.

баш

openssl verify -verbose -x509_strict <(cat my-domain.crt intermediate.crt)
4
03.03.2020, 14:31

Недавно я использовал этот инструмент https://github.com/drwetter/testssl.sh, и он предоставляет исчерпывающий отчет, связанный с SSL.

Пример вывода:

Testing protocols via sockets except NPN+ALPN

 SSLv2      not offered (OK)
 SSLv3      not offered (OK)
 TLS 1      not offered
 TLS 1.1    not offered
 TLS 1.2    offered (OK)
 TLS 1.3    not offered and downgraded to a weaker protocol
 NPN/SPDY   not offered
 ALPN/HTTP2 h2, http/1.1 (offered)

 Testing cipher categories

 NULL ciphers (no encryption)                       not offered (OK)
 Anonymous NULL Ciphers (no authentication)         not offered (OK)
 Export ciphers (w/o ADH+NULL)                      not offered (OK)
 LOW: 64 Bit + DES, RC[2,4], MD5 (w/o export)       not offered (OK)
 Triple DES Ciphers / IDEA                          not offered
 Obsolete: SEED + 128+256 Bit CBC cipher            offered
 non-FS Strong encryption (AEAD ciphers)            offered (OK)
 Forward Secure Strong encryption (AEAD ciphers)    offered (OK)


 Testing robust (perfect) forward secrecy, (P)FS -- omitting Null Authentication/Encryption, 3DES, RC4

 PFS is offered (OK)          ECDHE-RSA-AES256-GCM-SHA384
                              ECDHE-RSA-AES256-SHA384 ECDHE-RSA-AES256-SHA
                              ECDHE-RSA-AES128-GCM-SHA256
                              ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA
 Elliptic curves offered:     prime256v1 secp384r1 secp521r1 X25519 X448


 Testing server preferences

 Has server cipher order?     yes (OK)
 Negotiated protocol          TLSv1.2
 Negotiated cipher            ECDHE-RSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
 Cipher order
    TLSv1.2:   ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES256-GCM-SHA384
               ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES256-SHA384
               ECDHE-RSA-AES128-SHA ECDHE-RSA-AES256-SHA AES128-GCM-SHA256
               AES128-SHA AES256-SHA


 Testing server defaults (Server Hello)

 TLS extensions (standard)    "renegotiation info/#65281" "server name/#0"
                              "EC point formats/#11" "session ticket/#35"
                              "status request/#5" "max fragment length/#1"
                              "application layer protocol negotiation/#16"
                              "encrypt-then-mac/#22"
                              "extended master secret/#23"
 Session Ticket RFC 5077 hint 7200 seconds, session tickets keys seems to be rotated < daily
 SSL Session ID support       yes
 Session Resumption           Tickets: yes, ID: yes
 TLS clock skew               Random values, no fingerprinting possible
 Signature Algorithm          SHA256 with RSA
 Server key size              RSA 2048 bits
 Server key usage             Digital Signature, Key Encipherment
 Server extended key usage    TLS Web Server Authentication, TLS Web Client Authentication
 Serial / Fingerprints        REDACTED / SHA1 REDACTED
                              SHA256 REDACTED
 Common Name (CN)             REDACTED  (CN in response to request w/o SNI: *.REDACTED )
 subjectAltName (SAN)         REDACTED
 Issuer                       Let's Encrypt Authority X3 (Let's Encrypt from US)
 Trust (hostname)             Ok via SAN (SNI mandatory)
 Chain of trust               Ok
 EV cert (experimental)       no
 ETS/"eTLS", visibility info  not present
 Certificate Validity (UTC)   72 >= 30 days (2020-03-19 22:41 --> 2020-06-17 22:41)
 # of certificates provided   2
 Certificate Revocation List  --
 OCSP URI                     http://ocsp.int-x3.letsencrypt.org
 OCSP stapling                offered, not revoked
 OCSP must staple extension   --
 DNS CAA RR (experimental)    not offered
 Certificate Transparency     yes (certificate extension)


 Testing HTTP header response @ "/"

 HTTP Status Code             200 OK
 HTTP clock skew              -1 sec from localtime
 Strict Transport Security    366 days=31622400 s, just this domain
 Public Key Pinning           --
 Server banner                nginx
 Application banner           --
 Cookie(s)                    (none issued at "/")
 Security headers             X-Frame-Options SAMEORIGIN
                              X-Content-Type-Options nosniff
                              X-Served-By REDACTED, REDACTED
                              Cache-Control public, max-age=3600
 Reverse Proxy banner         X-Cache: HIT, HIT
                              X-Cache-Hits: 3, 1
                              Via: 1.1 varnish


 Testing vulnerabilities

 Heartbleed (CVE-2014-0160)                not vulnerable (OK), no heartbeat extension
 CCS (CVE-2014-0224)                       not vulnerable (OK)
 Ticketbleed (CVE-2016-9244), experiment.  not vulnerable (OK)
 ROBOT                                     not vulnerable (OK)
 Secure Renegotiation (RFC 5746)           supported (OK)
 Secure Client-Initiated Renegotiation     not vulnerable (OK)
 CRIME, TLS (CVE-2012-4929)                not vulnerable (OK)
 BREACH (CVE-2013-3587)                    potentially NOT ok, uses gzip HTTP compression. - only supplied "/" tested
                                           Can be ignored for static pages or if no secrets in the page
 POODLE, SSL (CVE-2014-3566)               not vulnerable (OK), no SSLv3 support
 TLS_FALLBACK_SCSV (RFC 7507)              No fallback possible (OK), no protocol below TLS 1.2 offered
 SWEET32 (CVE-2016-2183, CVE-2016-6329)    not vulnerable (OK)
 FREAK (CVE-2015-0204)                     not vulnerable (OK)
 DROWN (CVE-2016-0800, CVE-2016-0703)      not vulnerable on this host and port (OK)
                                           make sure you don't use this certificate elsewhere with SSLv2 enabled services
                                           https://censys.io/ipv4?q=REDACTED could help you to find out
 LOGJAM (CVE-2015-4000), experimental      not vulnerable (OK): no DH EXPORT ciphers, no DH key detected with <= TLS 1.2
 BEAST (CVE-2011-3389)                     not vulnerable (OK), no SSL3 or TLS1
 LUCKY13 (CVE-2013-0169), experimental     potentially VULNERABLE, uses cipher block chaining (CBC) ciphers with TLS. Check patches
 RC4 (CVE-2013-2566, CVE-2015-2808)        no RC4 ciphers detected (OK)


 Testing 370 ciphers via OpenSSL plus sockets against the server, ordered by encryption strength

Hexcode  Cipher Suite Name (OpenSSL)       KeyExch.   Encryption  Bits     Cipher Suite Name (IANA/RFC)
-----------------------------------------------------------------------------------------------------------------------------
 xc030   ECDHE-RSA-AES256-GCM-SHA384       ECDH 256   AESGCM      256      TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
 xc028   ECDHE-RSA-AES256-SHA384           ECDH 256   AES         256      TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
 xc014   ECDHE-RSA-AES256-SHA              ECDH 256   AES         256      TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
 x35     AES256-SHA                        RSA        AES         256      TLS_RSA_WITH_AES_256_CBC_SHA
 xc02f   ECDHE-RSA-AES128-GCM-SHA256       ECDH 256   AESGCM      128      TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
 xc027   ECDHE-RSA-AES128-SHA256           ECDH 256   AES         128      TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
 xc013   ECDHE-RSA-AES128-SHA              ECDH 256   AES         128      TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
 x9c     AES128-GCM-SHA256                 RSA        AESGCM      128      TLS_RSA_WITH_AES_128_GCM_SHA256
 x2f     AES128-SHA                        RSA        AES         128      TLS_RSA_WITH_AES_128_CBC_SHA


 Running client simulations (HTTP) via sockets

 Android 4.4.2                TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
 Android 5.0.0                TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
 Android 6.0                  TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
 Android 7.0                  TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
 Android 8.1 (native)         TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
 Android 9.0 (native)         TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
 Android 10.0 (native)        TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
 Chrome 74 (Win 10)           TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
 Chrome 79 (Win 10)           TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
 Firefox 66 (Win 8.1/10)      TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
 Firefox 71 (Win 10)          TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
 IE 6 XP                      No connection
 IE 8 Win 7                   No connection
 IE 8 XP                      No connection
 IE 11 Win 7                  TLSv1.2 ECDHE-RSA-AES128-SHA256, 256 bit ECDH (P-256)
 IE 11 Win 8.1                TLSv1.2 ECDHE-RSA-AES128-SHA256, 256 bit ECDH (P-256)
 IE 11 Win Phone 8.1          TLSv1.2 ECDHE-RSA-AES128-SHA256, 256 bit ECDH (P-256)
 IE 11 Win 10                 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
 Edge 15 Win 10               TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
 Edge 17 (Win 10)             TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
 Opera 66 (Win 10)            TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
 Safari 9 iOS 9               TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
 Safari 9 OS X 10.11          TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
 Safari 10 OS X 10.12         TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
 Safari 12.1 (iOS 12.2)       TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
 Safari 13.0 (macOS 10.14.6)  TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
 Apple ATS 9 iOS 9            TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
 Java 6u45                    No connection
 Java 7u25                    No connection
 Java 8u161                   TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
 Java 11.0.2 (OpenJDK)        TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
 Java 12.0.1 (OpenJDK)        TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
 OpenSSL 1.0.2e               TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 256 bit ECDH (P-256)
 OpenSSL 1.1.0l (Debian)      TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
 OpenSSL 1.1.1d (Debian)      TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)
 Thunderbird (68.3)           TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256, 253 bit ECDH (X25519)

Еще один классный инструмент командной строки — gnutls-cli. Он встроен -в системы MacOS и Linux -Unix.

5
06.04.2020, 03:52

Теги

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