問題
如何在 Dovecot 和 Exim 上使用多個 SSL 證書?
環境
VestaCP 0.9.8-24
原因
默認配置僅允許一對 SSL 證書。
解決辦法
假設我們現在有兩個網域
- cat.com
- dog.com
他們的憑證分別是
- cat.com.crt
- cat.com.key
- dog.com.crt
- dog.com.key
將所有憑證複製到 /usr/local/vesta/ssl/
scp /path/to/憑證/* Username@Vesta-IP:/usr/local/vesta/ssl/
切換目錄到 /usr/local/vesta/ssl/
後設定權限:
chmod 660 ./*
chown root:mail ./*
Exim
到 Vesta 控制面板,點選右上腳 Server -> Exim4 -> CONFIGURE 找到下列三行:
tls_advertise_hosts = *
tls_certificate= /usr/local/vesta/ssl/certificate.crt #註解或刪除
tls_privatekey= /usr/local/vesta/ssl/certificate.key #註解或刪除
修改成
tls_advertise_hosts = *
tls_certificate = ${if exists{/usr/local/vesta/ssl/${tls_sni}.crt}{/usr/local/vesta/ssl/${tls_sni}.crt}{/usr/local/vesta/ssl/certificate.crt}}
tls_privatekey = ${if exists{/usr/local/vesta/ssl/${tls_sni}.key}{/usr/local/vesta/ssl/${tls_sni}.key}{/usr/local/vesta/ssl/certificate.key}}
勾選 Restart 後,按下 Save 儲存。
Dovecot
到 Vesta 控制面板,點選右上腳 Server -> dovecot -> CONFIGURE 找到 /etc/dovecot/conf.d/10-ssl.conf
修改成:
# --------新增--------#
local_name cat.com {
ssl_cert = </usr/local/vesta/ssl/cat.com.crt
ssl_key = </usr/local/vesta/ssl/cat.com.key
}
local_name dog.com {
ssl_cert = </usr/local/vesta/ssl/dog.com.crt
ssl_key = </usr/local/vesta/ssl/dog.com.key
}
#--------------------#
ssl = yes
ssl_cert = </usr/local/vesta/ssl/certificate.crt
ssl_key = </usr/local/vesta/ssl/certificate.key
勾選 Restart 後,按下 Save 儲存。
測試
完成後記得測試憑證是否有正確安裝,要測試很簡單:
#測試IMAP
openssl s_client -showcerts -connect mail.example.com:993
#測試SMTP
openssl s_client -showcerts -connect mail.example.com:465
如果有憑證資訊跑出來核對一下正確就是成功了,失敗的話回去上面看一下是不是少做了什麼步驟。
以上。
參考資料
Tags