SMTP 서버를 통해 메일을 보내려고 합니다. /etc/mail.rc
파일을 설정합니다 .
set bsdcompat
set smtp=smtps://smtp.gmail.com:465
set smtp-auth=login
set [email protected]
set smtp-auth-password=password
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
이제 메일을 보낼 수 있지만 다음과 같은 오류가 발생합니다.
Error in certificate: Peer's certificate issuer is not recognized.
내 nssdb에 다음 항목이 있습니다.
certutil -L -d /etc/pki/nssdb
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
누구든지 이 문제를 해결하는 방법을 제안할 수 있나요? Google에서 검색했지만 올바른 해결책을 얻지 못했습니다.
답변1
출력 에 따르면 certutil -L -d /etc/pki/nssdb
nssdb가 비어 있습니다!
openssl s_client -showcerts -connect smtp.gmail.com:465 </dev/null
메일 서버 인증서의 공개 부분과 그것이 제공할 수 있는 발급자 인증서를 덤프할 수 있습니다 . 출력 내용은 상당히 길지만 먼저 다음 줄에 주의해야 합니다.
Server certificate
subject=/C=US/ST=California/L=Mountain View/O=Google LLC/CN=smtp.gmail.com
issuer=/C=US/O=Google Trust Services/CN=Google Internet Authority G3
그리고
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google LLC/CN=smtp.gmail.com
i:/C=US/O=Google Trust Services/CN=Google Internet Authority G3
[...]
1 s:/C=US/O=Google Trust Services/CN=Google Internet Authority G3
i:/OU=GlobalSign Root CA - R2/O=GlobalSign/CN=GlobalSign
따라서 서버(서버 인증서 섹션과 해당 섹션의 인증서인 경우 subject=
)에는 "Google Internet Authority G3"에서 발급한 인증서가 있습니다. 차례로 인증서를 받았습니다.0
Certificate chain
smtp.gmail.com
GlobalSign Root CA - R2
"globalsign root ca R2"라는 키워드를 Google에서 빠르게 검색하면 이 인증서가 2021년에 만료되는 상당히 오래된 인증서임을 알 수 있습니다. 믿으시면 다운받으시면 됩니다여기...하지만 웹 브라우저에 내장된 표준 인증서 저장소에서 "Google Internet Authority G3" 인증서 사본을 내보내는 것이 더 나은 생각일 것입니다.
어떤 인증서를 선택하든 파일에 있으면 바로 사용할 수 있습니다 certutil -A -d /etc/pki/nssdb -i <certificate file>
. (인증서를 PEM 형식으로 내보내는 경우 이 옵션을 추가할 수 있습니다 -a
.)
답변2
로컬 시스템에 인증서가 누락된 것 같습니다. 끝났어서버 장애같은 질문에 대한 답변입니다.
bash의 smtp.gmail.com에 "인증서 오류: 피어의 인증서 발급자가 인식되지 않습니다"가 표시됩니다.