
가상 사서함에 MariaDB를 사용하는 Dovecot 서버가 있습니다. MariaDB 서버는 동일한 LAN의 다른 시스템에 있습니다.
최근 MariaDB 시스템에서 TLS를 활성화했습니다.
Dovecot은 꺼져 있으면 제대로 작동 require_secure_transport
하지만 require_secure_transport
MariaDB 구성 파일을 켜면 연결에 실패합니다.
오류는 다음과 같습니다
Error: mysql(xxx.xxx.xxx.xxx): Connect failed to database (db_name): Access denied for user 'db_user'@'xxx.xxx.xxx.xxx' (using password: YES)
이는 인증 오류처럼 보이지만 이 동일한 사용자 및 비밀번호로 연결하면 require_secure_transport
꺼져 있을 때 잘 작동하므로 Dovecot이 TLS를 사용하지 않기 때문에 MariaDB가 연결을 거부합니다.
연결 문자열은 /etc/dovecot/dovecot-sql.conf.ext
다음과 같습니다.
connect = host=db0.mydomain.com dbname=my_db user=the_user password=secret ssl_ca=/etc/ssl/authority/authority.crt
구성 파일은 다음과 같이 말합니다.
ssl_ca, ssl_ca_path - SSL을 활성화하려면 둘 중 하나 또는 둘 다를 설정합니다.
오류에 대해 더 자세한 정보를 얻을 수 있나요? 예를 들어 TLS 버전이 일치하지 않는 경우 어딘가에 표시되도록 할 수 있나요?
Dovecot에 변경해야 할 설정이 있나요?
업데이트: ssl_verify_server_cert=no
연결 문자열에 추가하면 /etc/dovecot/dovecot-sql.conf.ext
연결이 작동할 수 있습니다.
그래서 인증서 확인 오류인 것 같습니다. 그러나 더 자세한 로깅이 없으면 인증서에 대해 무엇이 마음에 들지 않는지 잘 모르겠습니다.
인증서는 연결 문자열에서 CA에 의해 서명됩니다. 확인하는 일반 이름이 무엇인지, 그리고 Dovecot이 인증서에 SAN 값을 사용할지 여부를 아는 것이 좋습니다.
답변1
resolv.conf
imap 및 MariaDB 서버의 호스트 이름에 대한 레코드를 사용하여 로컬 네트워크에 DNS 서버를 설정한 다음 이를 사용하도록 두 컴퓨터 모두에서 설정하여 이것이 올바르게 작동하도록 했습니다 .
require_secure_transport
이제 Dovecot은 MariaDB에 설정하고 ssl_verify_server_cert=yes
Dovecot의 연결 문자열에 설정하여 문제 없이 연결됩니다 .
디버깅을 위한 더 자세한 오류 메시지가 없으면 TLS 구현이 의 매핑을 무시 /etc/hosts
하고 실제 DNS 서버를 사용해야 한다는 것이 최선의 추측입니다.