web-dev-qa-db-ja.com

DovecotとPostfixを使用してメールにSSLを設定する

私のサーバーでは、UbuntuにPostfixとDovecotとApache2をインストールしました。

SSL証明書を購入し、それを使用してWebサイトを保護しました。これは正常に機能します。

ここで、同じ証明書を使用してPostfixとDovecotを構成し、SSLでメールサーバーも使用できるようにします。しかし、電話のGmailアプリで設定すると、次のようになります。

Certificate not trusted
Subject: kanzan.se
Issuer: AlphaSSL CA - SHA256 - G2
Valid from: Jul 3, 2018
Expires on: Jul 4, 2019
Current date: Jul 6, 2018
PEM encoded chain: -----BEGIN CERTIFICATE-----
MIIFzTCCBLWgAwIBAgIMdmzZXlCIkPQV/MbvMA0GCSqGSIb3DQEBCwUAMEwxCzAJBgN...

これは私の構成です:

/etc/postfix/main.cf:

smtpd_tls_cert_file=/etc/ssl/certs/kanzan_cert_comb.crt
smtpd_tls_key_file=/etc/ssl/private/kanzan_ssl.key
smtpd_use_tls=yes
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_sender_login_maps = hash:/etc/postfix/controlled_envelope_senders
smtpd_recipient_restrictions = permit_sasl_authenticated
#reject_sender_login_mismatch

/etc/dovecot/conf.d/10-ssl.conf:

ssl = yes
ssl_cert = </etc/ssl/certs/kanzan_cert_comb.crt
ssl_key = </etc/ssl/private/kanzan_ssl.key

/etc/postfix/master.cf:

submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=may
  -o smtpd_sasl_auth_enable=yes

smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes

まず、メールとウェブサイトに同じ証明書を使用できますか? (同じドメイン)。このドメインkanzan.seを指すMXレコードをDNSに追加しました。

私の設定は正しいですか?

1
user2908112

これは、証明書とともに送信される証明書チェーンの問題です。 Apache2、Postfix、Dovecotで同じ証明書を使用できます。ただし、中間証明書の構成は異なります。Apacheには個別の SSLCertificateChainFile ディレクティブがありますが、PostfixとDovecotでは中間証明書が同じファイル(smtpd_tls_cert_file/ssl_cert)。

現在の設定をopenssl s_client -debug -connectでテストすると、SMTPSの場合はkanzan.se:465、HTTPSの場合はkanzan.se:443の両方で証明書が1つだけ表示されます。

Certificate chain
 0 s:/OU=Domain Control Validated/CN=kanzan.se
   i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2

これにより、中間証明書も表示されます。ルートCAへの完全なチェーンは次のとおりです。

Certificate chain
  0 s:/OU=Domain Control Validated/CN=kanzan.se
    i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
  1 s:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
    i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
  2 s:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
    i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA

PostfixとDovecot(およびApache)用にこれを設定するには:

  1. GlobalSignから中間証明書を取得できます AlphaSSL中間証明書 。シリアル040000000001444ef03631のあるものが必要です。

    /etc/ssl/certs# wget https://secure.globalsign.com/cacert/gsalphasha2g2r1.crt
    

    GlobalSignルートCAはGlobalSign_Root_CA.pemにある必要があります。あなたはシリアルをチェックすることができます:

    /etc/ssl/certs$ openssl x509 -in GlobalSign_Root_CA.pem -serial -noout
    serial=040000000001154B5AC394
    
  2. ダウンロードされたgsalphasha2g2r1.crtは現在DERエンコードされたバイナリ形式ですが、すべての証明書はASCII装甲PEM形式である必要があります。次を使用して変換する必要があります:

    openssl x509 -inform DER -in gsalphasha2g2r1.crt -out gsalphasha2g2r1.pem
    
  3. Postfix TLS readme で説明されているように証明書を結合します。 Dovecot の順序は同じです。

    cat kanzan_cert_comb.crt gsalphasha2g2r1.pem GlobalSign_Root_CA.pem > postfix.crt
    
  4. 次の証明書を使用してください。

    • 接尾辞:smtpd_tls_cert_file=/etc/ssl/certs/postfix.crt
    • Docevot:ssl_cert = </etc/ssl/certs/postfix.crt
    • Apache、追加:SSLCertificateChainFile /etc/ssl/certs/gsalphasha2g2r1.crt
1
Esa Jokinen