openssl: 비공개로 서명된 인증서를 확인하기 위해 기본 CA 인증서를 강제로 사용하지 않음

openssl: 비공개로 서명된 인증서를 확인하기 위해 기본 CA 인증서를 강제로 사용하지 않음

내 자체 서명된 인증서를 사용하여 내 웹 서버가 올바르게 구성되었는지 확인하고 싶습니다. 웹 서버에는 일반적으로 구매되는 CA 서명 인증서도 있습니다.

제가 직면한 문제는 일반 내장 CA 인증서를 비활성화할 수 없다는 것입니다. 자체 서명된 인증서를 테스트해도 괜찮습니까 cnn.com? ! ?

openssl s_client -CAfile my.pem -CApath /dev/null -cert my.pem -connect cnn.com:443
[...]
Verify return code: 0 (ok)

일치하는 자체 서명 인증서가 웹 서버에 설치되지 않은 경우 어떻게 오류가 발생합니까 openssl?

답변1

s_client(1ssl)매뉴얼 페이지 에서 :

s_client 유틸리티는 인증서 유효성 검사 오류 후에도 핸드셰이크를 계속하도록 설계된 테스트 도구입니다. 따라서 피어가 보낸 모든 인증서 체인(신뢰할 수 있거나 신뢰할 수 없음)을 수락합니다. 테스트되지 않은 애플리케이션은 MITM 공격에 취약해지기 때문에 이 작업을 수행해서는 안 됩니다. 이 동작은 -verify_return_error 옵션을 사용하여 변경할 수 있습니다. 그런 다음 확인 오류가 반환되고 핸드셰이크가 중단됩니다.

-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.

관련 정보