メールサーバー間通信内容暗号化(Postfix+Dovecot+OpenSSL+FujiSSL)(AlmaLinux)
メインページ > Category:自宅サーバー > AlmaLinux 8 で自宅サーバー構築 > メールサーバー間通信内容暗号化(Postfix+Dovecot+OpenSSL+FujiSSL)(AlmaLinux)
SSLを導入しないとなぁと思っていたので、自宅サーバーに格安の FujiSSL を導入してみました。
(Postfix+Dovecot+OpenSSL+FujiSSL)
FujiSSL から SSL サーバー証明書を取得する
まず、申請に必要な CSR ファイルの作成から行います。
秘密キーの生成
SSL サーバー証明書に必要な秘密鍵を生成する。
[root@host4 ~]# mkdir ssl-key [root@host4 ~] openssl genrsa -des3 -out ./ssl-key/ssl-mail.sudachi.jp.key 2048 ・ ・ Enter pass phrase for ./ssl-key/ssl-mail.sudachi.jp.key: ← 任意のパスワードを応答※表示はされない Verifying - Enter pass phrase for ./ssl-key/ssl-mail.sudachi.jp.key: ← 任意のパスワードを応答※表示はされない
メイルサーバー起動時にパスワードを要求されないようにするためサーバー用秘密鍵からパスワード削除。
[root@host4 ~]# openssl rsa -in ./ssl-key/ssl-mail.sudachi.jp.key -out ./ssl-key/ssl-mail.sudachi.jp.key Enter pass phrase for ./ssl-key/ssl-mail.key: ← サーバー用秘密鍵・証明書作成時のパスワード応答※表示はされない writing RSA key
このようにすることで、SSL サーバー証明書に必要な秘密鍵を "./ssl-key/ssl-mail.sudachi.jp.key" として生成することができました。秘密鍵が生成できたら、それを用いて CSR ファイルを生成します。
CSRファイルを生成
秘密鍵が生成できたら、それを用いて CSR ファイルを生成します。
※入力には以下の点にご注意ください。
半角の英数字64文字以内で入力してください 識別名に、以下の文字 は使用できません ! ” # $ % & ( ) * + / ; < > ? @ [ ¥ ] ^ _ ` { | } ~ 「&」が含まれる場合は、半角英字の and 等に置き換えてください スペースのみの入力は控えてください。 スペースのみの入力項目がある場合、 証明書が発行されません CSRは、emailAddressを含めないよう生成ください。 emailAddress を含んだCSRを送付いただいても、 弊社発行の証明書には emailAddress は含まれません。
[root@host4 ~]# openssl req -new -key ./ssl-key/ssl-mail.sudachi.jp.key -out ./ssl-key/ssl-mail.sudachi.jp.csr
フィールド | 説明 | 例 |
---|---|---|
Country Name (2 letter code) | 国を示す2文字のISO略語 | JP |
State or Province Name (full name) | 組織が置かれている都道府県 | Tokushima |
Locality Name (eg, city) [Default City] | 組織が置かれている市区町村 | Tokushima-shi |
Organization Name (eg, company) | 組織の名称(個人の場合はドメインの登録者名) | sudachi.jp |
Organizational Unit Name (eg, section) | 組織の部門名(入力しなくても良い) | System |
Common Name | メールサーバーのコモンネイム | mail.sudachi.jp |
Email Address | 入力不要 | |
A challenge password | 入力不要 | |
An optional company name | 入力不要 |
これで、先ほど作成した秘密鍵に対応した CSR ファイル "./ssl-key/ssl-mail.csr" の生成できました。これをもって、SSL サーバー証明書の取得申請を行う運びとなります。
SSLサーバ証明書申込
FujiSSLストアフロント へアクセスすると、そこには申請における注意事項が掲載されています。それらに目を通した上で、申込フォームに必要事項を入力します。必要事項は契約期間などといった簡単なものがほとんどでした。
クレジットカード払いの場合だと、すぐに "SSL 証明書発行承認依頼通知" が送られてきます。
送られてきたメールの URL をクリックして承認画面を表示して、内容事項に間違いなければ 【承認します】 ボタンをクリックします。すると、SSL サーバー証明書が記されたメールが届くので、これで SSL サーバー証明書の発行手続きは完了となります。
SSLサーバ証明書設定
SSL サイト設定の "SSLCertificateFile" と "SSLCertificateKeyFile" と "SSLCertificateChainFile" とに、それぞれ "SSL サーバー証明書" と "秘密鍵" と "中間証明書" とを設定すれば、これで SSL サイトの運営準備が完了します。
サーバー証明書作成
サーバー証明書+中間証明書を作成します。
メールで送られてきた SSLサーバ証明書の "-----BEGIN CERTIFICATE-----" を含むそこから "-----END CERTIFICATE-----" を含むそこまで貼り付けます。
メールで送られてきた中間CA証明書の "-----BEGIN CERTIFICATE-----" を含むそこから "-----END CERTIFICATE-----" を含むそこまで貼り付けます。
[root@host4 ~]# vi /etc/pki/tls/certs/ssl-mail.sudachi.jp.crt -----BEGIN CERTIFICATE----- ・ ・ -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ・ ・ -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ・ ・ -----END CERTIFICATE-----
秘密鍵コピー
[root@host4 ~]# cp ./ssl-key/ssl-mail.sudachi.jp.key /etc/pki/tls/certs/ssl-mail.sudachi.jp.key
パーミッション変更
安全のため所有者以外が読み書きできなくする。
[root@host4 ~]# chmod 600 /etc/pki/tls/certs/ssl-mail*
サーバ証明書設定
SSLサーバ証明書をPostfixに設定
Postfix設定ファイル編集
[root@host4 ~]# vi /etc/postfix/main.cf #以下を最終行へ追加 # SSLサーバー証明書を指定 smtpd_use_tls = yes smtp_tls_mandatory_protocols = !SSLv2, !SSLv3 smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 smtpd_tls_cert_file = /etc/pki/tls/certs/ssl-mail.sudachi.jp.crt ← サーバー証明書+中間証明書を指定 smtpd_tls_key_file = /etc/pki/tls/certs/ssl-mail.sudachi.jp.key ← 秘密鍵を指定 smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
postfix設定ファイル(master.cf)編集
[root@host4 ~]# vi /etc/postfix/master.cf #submission inet n - n - - smtpd ← 行頭に#を追加してコメントアウト(SUBMISSIONポート無効化) # -o syslog_name=postfix/submission # -o smtpd_tls_security_level=encrypt # -o smtpd_sasl_auth_enable=yes ← 行頭に#を追加してコメントアウト(SUBMISSIONポートでSMTP認証無効化) smtps inet n - n - - smtpd ← 行頭の#を削除してコメント解除(SMTPS有効化) -o smtpd_tls_wrappermode=yes ← 行頭の#を削除してコメント解除(SMTPS有効化) -o smtpd_sasl_auth_enable=yes ← 行頭の#を削除してコメント解除(SMTPS有効化) tlsmgr unix - - n 1000? 1 tlsmgr ← 行頭の#を削除してコメント解除(SMTPS有効化)
Postfix再起動
[root@host4 ~]# systemctl restart postfix
SSLサーバ証明書をDovecotに設定
DovecotSSL設定ファイル編集
[root@host4 ~]# vi /etc/dovecot/conf.d/10-ssl.conf #ssl = yes ssl = yes ← TLS通信の有効化 # PEM encoded X.509 SSL/TLS certificate and private key. They're opened before # dropping root privileges, so keep the key file unreadable by anyone but # root. Included doc/mkcert.sh can be used to easily generate self-signed # certificate, just make sure to update the domains in dovecot-openssl.cnf ssl_cert = </etc/pki/tls/certs/ssl-mail.sudachi.jp.crt ← サーバー証明書+中間証明書を指定 ssl_key = </etc/pki/tls/certs/ssl-mail.sudachi.jp.key ← 秘密鍵を指定 # 脆弱性のある暗号化方式(SSLv2,SSLv3)を無効化 # SSL protocols to use #ssl_protocols = !SSLv2 ssl_protocols = !SSLv2 !SSLv3 # SSL ciphers to use #ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL # 使用する暗号化方法を指定(脆弱性のある暗号化方法を除外) ssl_cipher_list = EECDH+AESGCM+AES128:EECDH+AESGCM+AES256:EDH+AESGCM+AES128:EDH+AESGCM+AES256:EECDH+SHA256+AES128:EECDH+SHA384 +AES256:EDH+SHA256+AES128:EDH+SHA256+AES256:EECDH+SHA1+AES128:EECDH+SHA1+AES256:EDH+SHA1+AES128:EDH+SHA1 +AES256:EECDH+HIGH:EDH+HIGH:AESGCM+AES128:AESGCM+AES256:SHA256+AES128:SHA256+AES256:SHA1+AES128:SHA1 +AES256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!KRB5:!aECDH:!3DES ← 注意:途中に改行が入っています
Dovecot再起動
[root@host4 ~]# systemctl restart dovecot