다음과 openssl s_client
같은 인증서 확인 오류를 생성하려고합니다 .
$ openssl s_client -crlf -verify 9 \
-CAfile /etc/ssl/certs/TURKTRUST_Certificate_Services_Provider_Root_1.pem \
-starttls smtp -host mx-ha03.web.de -port 25
web.de 서버의 인증서는 TURKTRUST가 아닌 Deutsche Telekom CA에 의해 인증되므로 위의 명령이 실패해야합니까?
그러나 그것은보고 :
Verify return code: 0 (ok)
왜?
아날로그 gnutls-cli 명령이 예상대로 실패했음을 의미합니다.
$ { echo -e 'ehlo example.org\nstarttls' ; sleep 1 } | \
gnutls-cli --starttls --crlf \
--x509cafile /etc/ssl/certs/TURKTRUST_Certificate_Services_Provider_Root_1.pem \
--port 25 mx-ha03.web.de
[..]
*** Verifying server certificate failed...
교차 검사를 수행하면 (즉, --x509cafile /etc/ssl/certs/ca-certificates.crt
gnutls-cli 대신 사용)
[..]
- The hostname in the certificate matches 'mx-ha03.web.de'.
- Peer's certificate is trusted
(이 또한 예상됩니다)
ca-certificates.crt에 대한 Openssl s_client 인쇄 :
Verify return code: 0 (ok)
TURKTRUST와 동일한 결과 ...
먼저 기본 설정 -CApath
(예 : / etc / ssl / certs)을 사용하여 openssl을 의심 했지만 strace
프로세스가 진행 open
되면 인수에 대한 syscall 만 보입니다 CAfile
.
(모든 테스트는 Ubuntu 10.04 서버에서 수행됨)
업데이트 : TURKTRUST 인증서를 Fedora 20 시스템에 복사하고 첫 번째 openssl 문을 실행했습니다. 다른 결과가 나타납니다.
Verify return code: 19 (self signed certificate in certificate chain)