Из справочной страницы 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
.