Postfix에서는 개인 키, 인증서 및 CA 인증서를 지정했습니다.
smtpd_tls_CAfile = /etc/ssl/cacert.pem
smtpd_tls_key_file = /etc/ssl/server.key
smtpd_tls_cert_file = /etc/ssl/server.pem
비둘기장에는 내 키와 인증서를 지정하는 옵션만 있습니다.
ssl_cert = </etc/ssl/server.pem
ssl_key = </etc/ssl/server.key
내 CA 인증서를 어떻게 지정합니까?
고쳐 쓰다:
문제는 클라이언트를 포트 993에 연결할 때 인증서 오류가 발생한다는 것입니다. 이것을 사용하면 openssl s_client -connect server:993
다음 오류가 발생합니다.
verify return:1
verify error:num=27:certificate not trusted
verify return:1
verify error:num=21:unable to verify the first certificate
verify return:1
포트 465(Postfix)에 연결하면 다음 오류가 발생하지 않습니다.
openssl s_client -connect server:465
답변1
필요한 것은 연결된 인증서입니다. 다음과 같이 만들 수 있습니다.
cat /etc/ssl/server.pem /etc/ssl/cacert.pem > /etc/ssl/chain.pem
그런 다음 해당 체인을 서버 인증서로 사용하십시오.
ssl_cert = </etc/ssl/chain.pem
ssl_key = </etc/ssl/server.key
이제 연결하면 openssl s_client
오류가 발생하지 않습니다(다른 모든 항목이 올바르게 설정된 경우).
답변2
일반적으로 서버는 요청하는 클라이언트에게 중간 인증 기관 인증서와 함께 서버 인증서를 제공하므로 클라이언트는 체인의 최상위 인증서를 신뢰할 수 있는(루트) 인증서 중 하나와 일치시킬 수 있습니다. 이는 apache, dovecot 및 postfix에 해당됩니다. Dovecot에는 신뢰 체인 설정이 없는 것 같습니다. 따라서 이 경우 신뢰 체인은 서버 인증서와 병합되어 이를 가리켜야 합니다.
ssl_cert = </etc/ssl/server-plus-chain.pem
인증서의 순서는 다음과 같습니다.
- 서버 인증서
- 중개 증명서
마지막 중간 인증서는 클라이언트가 사용할 수 있는 신뢰할 수 있는 루트 인증서에 의해 발급됩니다.
답변3
애플리케이션이 SSL 서버로 작동하는 경우 클라이언트에 제공되는 인증서와 같은 인증서와 키가 필요합니다. 애플리케이션이 SSL 클라이언트로 작동하므로 서버에서 제공한 인증서를 확인해야 하는 경우 신뢰할 수 있는 CA 목록이 필요합니다.
postfix는 서버(메일 수락)와 클라이언트(다른 메일 서버로 메일 보내기) 역할을 모두 수행할 수 있지만 dovecot은 서버일 뿐이므로 신뢰할 수 있는 CA 목록이 필요하지 않습니다.
답변4
CA 인증서에 여러 파일이 있는 경우 다음 문제를 해결할 수 있습니다.
ssl_verify_client_cert = yes
ssl_ca = </etc/ssl/myssl/startssl.pem
ssl_ca = </etc/ssl/myssl/sub.class2.server.ca.pem