メールサーバー · 1 min read · Oct 06, 2025

CA署名のクライアントおよびサーバー証明書

C. CA署名のクライアントおよびサーバー証明書

CA署名のクライアント証明書を使用する場合、これを機能させるためにPostfixとDovecotの両方でさらに手順を踏む必要があります。ユーザー名を証明書自体から取得したい場合、現在は一般名をユーザー名に設定する必要があります。たとえば、この文書で使用されている[email protected]のように。

1. Postfixに証明書を知らせる

Postfixでは、CA証明書のディレクトリを使用するか、すべての証明書を連結した複合ファイルを使用できます。Dovecotが期待しているため、連結形式を使用します。

# postconf -e 'smtpd_tls_CAfile = /etc/ssl/example.com/ca/all.pem'

2. Dovecotに証明書を知らせる

Dovecotでは、認証が機能するためにCRLと証明書を一緒に持っている必要があります。指示は次のとおりです。

/etc/dovecot/dovecot.conf
[...]  
ssl_ca_file = /etc/ssl/example.com/ca/all.pem  
ssl_verify_client_cert = yes  
ssl_require_client_cert = yes  
ssl_username_from_cert = yes  
[...]  

注意: /etc/dovecot/dovecot-sql.confのコメントされたものにpassword_queryを変更する必要があります。

警告: Dovecotリリース候補28以前を実行している場合、サーバーは受け入れられたCA名のリストを送信しないため、複数のクライアント証明書を持つクライアントが接続できなくなる可能性があります。アップグレードするか、このパッチをインストールしてください。

3. ファイルの連結

複数のCAとCRLがある場合、毎回それらを連結するのは難しい場合があるため、それを行う小さなスクリプトが作成されました。これを/etc/ssl/example.com/ca/ディレクトリに置き、実行してください。すべての証明書とすべてのCRLを含むall.pemが作成されます。

make.sh:
#!/bin/bash  
rm all.pem 2> /dev/null  
cat *.pem *.crl > all.pem

4. Postfix TLS設定

前述のように、Postfixで変更する必要がある設定もあるので、main.cfを修正しましょう:

# postconf -e 'smtpd_tls_ask_ccert = yes'  
# postconf -e 'smtpd_tls_req_ccert = no'  
# postconf -e 'smtpd_recipient_restrictions = permit_tls_all_clientcerts, reject'

これで、クライアント証明書を持つエンタープライズ対応のメールサーバーが完成しました。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。