openssl :принудительно не использовать сертификаты ЦС по умолчанию, чтобы проверить частный подписанный сертификат

Простым способом было бы использовать:

PATH=$HOME:$PATH
0
25.06.2021, 10:44
1 ответ

Из справочной страницы s_client(1ssl):

The s_client utility is a test tool and is designed to continue the handshake after any certificate verification errors. As a result it will accept any certificate chain (trusted or not) sent by the peer. Non-test applications should not do this as it makes them vulnerable to a MITM attack. This behaviour can be changed by with the -verify_return_error option: any verify errors are then returned aborting the handshake.

Таким образом, вам нужно добавить параметр -verify_return_errorв командную строку, чтобы фактически отлавливать ошибки проверки сертификата.

Кроме того, вы можете использовать эту функцию оболочки для прямого просмотра информации о сертификате любого сервера TLS в удобочитаемой -форме:

tlscert() {
    openssl s_client -CApath /dev/null -connect "$@" </dev/null 2>/dev/null \
        | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' \
        | openssl x509 -noout -text -certopt no_pubkey,no_sigdump,no_header,ext_parse \
            -nameopt multiline,show_type
}

Добавьте это в свой .bashrcили аналогичный, выйдите из системы и войдите в систему, а затем запустите, например.tlscert cnn.com:443. Если удаленный сервер использует StartTLS, вы все равно можете использовать эту команду, например. tlscert imap.domain.example:143 -starttls imap.

Обратите внимание, что :опция -starttlsдолжна быть после параметра hostname:port.

0
28.07.2021, 11:22

Теги

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