Javascript is required

Apr 26, 2019

VestaCP Mail Server設定兩個SSL憑證

VestaCP Mail Server設定兩個SSL憑證

問題

如何在 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

如果有憑證資訊跑出來核對一下正確就是成功了,失敗的話回去上面看一下是不是少做了什麼步驟。

以上。

參考資料

MULTIPLE SSL CERTS WITH DOVECOT & EXIM

IMAP/POP3/SMTP 用に SSL が機能し、適切な証明書がインストールされていることを確認するには

Tags