広告

検索

RSS RSSフィード

カレンダー

2009年5月
« 4月   7月 »
 123
45678910
11121314151617
18192021222324
25262728293031

カテゴリー

最新のコメント

リンク

自宅サーバー再構築 その23 CentOS 5.3 メールサーバー構築(SSL導入編)

投稿者:yasu 更新日時:2009年5月2日 9時40分00秒
カテゴリCentOS, dovecot, Linux, OpenSSL, postfix, 自宅サーバー

前回に引き続いてメールサーバーの設定を行っていきます。
今回はSSLの設定を行います。
自宅サーバー再構築 その15 Apacheにサーバー証明書を導入するでWebサーバー用にサーバー証明書を作成済みですが、yasuの自宅サーバーはWebサーバー(www.sa-sa-ki.jp)とメールサーバー(mail.sa-sa-ki.jp)で名前が異なりますので、サーバー証明書もあえて作りわけたいと思います。

ちなみにメールサーバーにSSLを導入した場合の暗号化の範囲ですが、メールを送受信するクライアントと自宅サーバー間だけで、自宅サーバーから相手サーバー、相手サーバーから相手クライアントの間はSSLの暗号化対象ではありません。

自宅にあるPCから相手にメールを送る場合は緑線の1→2→3→4の順番でメールが送信されるのですが、暗号化されるのは1の区間だけです。
同様に外部のPCから相手にメールを送る場合は紫線のa→b→c→d→eの順番でメールが送信されるのですが、暗号化されるのはaとbの区間だけです。

OpenSSLの設定ファイル編集およびサーバー証明書作成準備

以前作成したWebサーバー用サーバー証明書作成ワークディレクトリ直下にメールサーバー用サーバー証明書作成ワークディレクトリを作成します。
[root@centos ~]# cd /etc/pki/tls/yasu
[root@centos yasu]# mkdir mailssl

以前作成したOpenSSLの設定ファイルをコピーして再利用します
[root@centos yasu]# cp openssl.cnf ./mailssl
[root@centos yasu]# cd mailssl
[root@centos mailssl]# ls -la
合計 32
drwxr-xr-x 2 root root 4096 4月 5 12:51 .
drw------- 3 root root 4096 4月 5 12:50 ..
-r-------- 1 root root 9534 4月 5 12:51 openssl.cnf

中身が空っぽのテキストファイル index.txt と01と書いた serial ファイルを作成します
[root@centos mailssl]# touch index.txt
[root@centos mailssl]# echo 01 > serial
[root@centos mailssl]# ls -la
合計 44
drwxr-xr-x 2 root root 4096 4月 5 12:51 .
drw------- 3 root root 4096 4月 5 12:50 ..
-rw-r--r-- 1 root root 0 4月 5 12:51 index.txt
-r-------- 1 root root 9534 4月 5 12:51 openssl.cnf
-rw-r--r-- 1 root root 3 4月 5 12:51 serial

サーバー秘密鍵作成

サーバー秘密鍵を作成します。

[root@centos mailssl]# openssl genrsa -out ./server.key -des3 1024
Generating RSA private key, 1024 bit long modulus
....++++++
..........++++++
e is 65537 (0x10001)
Enter pass phrase for ./server.key:任意のパスフレーズを入力
Verifying - Enter pass phrase for ./server.key:もう一度任意のパスフレーズを入力

メールサーバーにSSLでアクセスした時に毎回パスフレーズを聞かれないようにパスフレーズ付きサーバー秘密鍵を作成します
[root@centos mailssl]# openssl rsa -in ./server.key -out ./server.key
Enter pass phrase for ./server.key:上記パスフレーズを応答
writing RSA key

[root@centos mailssl]# ls -la
合計 52
drwxr-xr-x 2 root root 4096 4月 5 12:52 .
drw------- 3 root root 4096 4月 5 12:50 ..
-rw-r--r-- 1 root root 0 4月 5 12:51 index.txt
-r-------- 1 root root 9534 4月 5 12:51 openssl.cnf
-rw-r--r-- 1 root root 3 4月 5 12:51 serial
-rw-r--r-- 1 root root 963 4月 5 12:52 server.key

server.key というファイルが作成されました

CSR(証明書署名要求)作成

「サーバー秘密鍵作成」で作成したサーバー秘密鍵ファイルを使ってCSR(証明書署名要求)を作成します。

[root@centos mailssl]# openssl req -new -days 3650 -config ./openssl.cnf -key ./server.key -out ./server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:chiba
Locality Name (eg, city) [Newbury]:urayasu
Organization Name (eg, company) [My Company Ltd]:sa-sa-ki.jp
Organizational Unit Name (eg, section) []:何も入力しないで[Enter]キーを押下
Common Name (eg, your name or your server's hostname) []:mail.sa-sa-ki.jp
Email Address []:何も入力しないで[Enter]キーを押下

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:何も入力しないで[Enter]キーを押下
An optional company name []:何も入力しないで[Enter]キーを押下
[root@centos mailssl]# ls -la
合計 60
drwxr-xr-x 2 root root 4096 4月 5 12:53 .
drw------- 3 root root 4096 4月 5 12:50 ..
-rw-r--r-- 1 root root 0 4月 5 12:51 index.txt
-r-------- 1 root root 9534 4月 5 12:51 openssl.cnf
-rw-r--r-- 1 root root 3 4月 5 12:51 serial
-rw-r--r-- 1 root root 639 4月 5 12:53 server.csr
-rw-r--r-- 1 root root 887 4月 5 12:52 server.key

server.csr というファイルが作成されました

CSRに署名

CSRファイルに署名を行い、サーバー証明書を作成します。

[root@centos mailssl]# openssl ca -config ./openssl.cnf -days 3650 -in ./server.csr -keyfile ../cakey.pem -cert ../cacert.pem -out ./server.pem
※サーバー証明書を作成するのに必要な認証局の秘密鍵と認証局の証明書は以前Webサーバーのサーバー証明書を作成した時に作ったものを指定します
Using configuration from ./openssl.cnf
Enter pass phrase for ../cakey.pem:以前Webサーバーのサーバー証明書を作成した時に作った認証局のパスフレーズを応答
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Apr 5 04:01:14 2009 GMT
Not After : Apr 3 04:01:14 2019 GMT
Subject:
countryName = JP
stateOrProvinceName = chiba
organizationName = sa-sa-ki.jp
commonName = mail.sa-sa-ki.jp
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
38:88:E0:47:C2:D6:C0:2F:C7:95:8A:DF:D1:BB:76:61:AB:47:CC:96
X509v3 Authority Key Identifier:
keyid:FE:40:F5:F1:60:78:3F:F4:BF:63:2B:FE:DE:CE:D9:32:5B:44:05:52

Certificate is to be certified until Apr 3 04:01:14 2019 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

各ファイルをrootユーザ読み取り専用に権限を変更します
[root@centos mailssl]# chmod 400 *
[root@centos mailssl]# ls -l
合計 48
-r-------- 1 root root 0 4月 5 12:51 index.txt
-r-------- 1 root root 9534 4月 5 12:51 openssl.cnf
-r-------- 1 root root 0 4月 5 12:55 serial
-r-------- 1 root root 639 4月 5 12:53 server.csr
-r-------- 1 root root 887 4月 5 12:52 server.key
-r-------- 1 root root 830 4月 5 12:54 server.pem

server.pemというファイルが作成されました

サーバー証明書ファイルとサーバー秘密鍵ファイルコピー

サーバー証明書ファイルとサーバー秘密鍵ファイルを所定の場所にコピーします。

[root@centos mailssl]# cp server.key /etc/postfix
[root@centos mailssl]# cp server.pem /etc/postfix
[root@centos mailssl]# cp server.key /etc/pki/dovecot
[root@centos mailssl]# cp server.pem /etc/pki/dovecot

Postfix(送信サーバー)のSSL用設定ファイル変更

Postfix(送信サーバー)用設定ファイルを変更します。

[root@centos mailssl]# cd
[root@centos ~]# vi /etc/postfix/main.cf

viエディタが起動するので追加します

# SMTP SSL
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/postfix/server.pem
smtpd_tls_key_file = /etc/postfix/server.key
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache

内容を保存しviエディタを終了します

[root@centos ~]# vi /etc/postfix/master.cf

viエディタが起動するので修正します

#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
#submission inet n - n - - smtpd
# -o smtpd_enforce_tls=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
以下4行の先頭の#を外してコメントを解除します
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject

#628 inet n - n - - qmqpd
pickup fifo n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
#qmgr fifo n - n 300 1 oqmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
smtp unix - - n - - smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix - - n - - smtp
-o fallback_relay=
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - n - - showq
error unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache

内容を保存しviエディタを終了します

Dovecot(受信サーバー)のSSL用設定ファイル変更

Dovecot(受信サーバー)用設定ファイルを変更します。

[root@centos ~]# vi /etc/dovecot.conf

viエディタが起動するので追加します

# Disable SSL/TLS support.
#ssl_disable = no
ssl_disable = no

# 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_file = /etc/pki/dovecot/certs/dovecot.pem
#ssl_key_file = /etc/pki/dovecot/private/dovecot.pem
ssl_cert_file = /etc/pki/dovec
ot/server.pem
ssl_key_file = /etc/pki/dovecot/server.key

内容を保存しviエディタを終了します

ファイアウォールの設定変更

[root@centos ~]# vi /etc/sysconfig/iptables

viエディタが起動するので追加します

# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 123 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
下記6行を追加してTCPの465番ポート(smtps)、993番ポート(imaps)、995番ポート(pop3s)を開放します
IP制御をしてローカルネットワーク内と特定の外部からのみ接続できるようにします

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 465 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 465 -s xxx.xxx.xx.xx(外部IPアドレス) -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 993 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 993 -s xxx.xxx.xx.xx(外部IPアドレス) -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 995 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 995 -s xxx.xxx.xx.xx(外部IPアドレス) -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

内容を保存しviエディタを終了します

設定内容を反映します
[root@centos ~]# /etc/rc.d/init.d/iptables restart
ファイアウォールルールを適用中: [ OK ]
チェインポリシーを ACCEPT に設定中filter [ OK ]
iptables モジュールを取り外し中 [ OK ]
iptables ファイアウォールルールを適用中: [ OK ]
iptables モジュールを読み込み中ip_conntrack_netbios_ns [ OK ]

ルータの設定を変更変更

ルータの設定を変更してTCPの465番ポート(smtps)、993番ポート(imaps)、995番ポート(pop3s)を開放します。
開放方法はルータの設定手順に従って実施してください。

次回はThunderbirdの設定を行い、メールの送受信を行います。

■ 参考サイト ■
flashcast:フリーで働くITエンジニア集団のブログ: 自宅サーバー再構築 その15 Apacheにサーバー証明書を導入する
メールサーバー間通信内容暗号化(OpenSSL+Postfix+Dovecot) - CentOSで自宅サーバー構築
はじめての自宅サーバ構築 Fedora/CentOS - 通信内容暗号化(OpenSSL & mod_SSL) 〜 メール編 〜

■関連記事
自宅サーバー再構築 その1 導入を検討する
自宅サーバー再構築 その2 CentOS 5.2 をインストールする
自宅サーバー再構築 その3 インストールしたCentOS 5.2 にリモート接続準備
自宅サーバー再構築 その4 CentOS 5.2 インストール後の初期設定
自宅サーバー再構築 その5 CentOS 5.2 ファイル転送準備
自宅サーバー再構築 その6 CentOS 5.2 にアンチウィルスソフトを導入する
自宅サーバー再構築 その7 CentOS 5.2 にファイル改竄検知システムを導入する
自宅サーバー再構築 その8 CentOS 5.2 にrootkit検知ツールを導入する
自宅サーバー再構築 その9 CentOS 5.2 にバッファオーバーフロー攻撃対策を行う
自宅サーバー再構築 その10 CentOS 5.2 SSHサーバーを構築して外部からリモート接続&リモートファイル転送
自宅サーバー再構築 その11 CentOS 5.2 にDNSサーバーを導入して名前解決(設定編)
自宅サーバー再構築 その12 CentOS 5.2 にDNSサーバーを導入して名前解決(確認編)
自宅サーバー再構築 その13 CentOS 5.2 にLAMP環境構築(Apache、PHP編)
自宅サーバー再構築 その14 CentOS 5.2 にLAMP環境構築(MySQL編)
自宅サーバー再構築 その15 Apacheにサーバー証明書を導入する
自宅サーバー再構築 その16 CentOS 5.2 にWordPressを導入してブログサイトを構築する
自宅サーバー再構築 その17 WordPressのセキュリティ対策
自宅サーバー再構築 その18 CentOS 5.3 にNTPサーバーを導入して自動時間合わせ
自宅サーバー再構築 その19 CentOS 5.3 アンチウィルスソフトのバージョンアップ
自宅サーバー再構築 その20 CentOS 5.3 メールサーバー構築(Postfix設定編)
自宅サーバー再構築 その21 CentOS 5.3 メールサーバー構築(Dovecot設定編)
自宅サーバー再構築 その22 CentOS 5.3 メールサーバー構築(公開編)
自宅サーバー再構築 その23 CentOS 5.3 メールサーバー構築(SSL導入編)
自宅サーバー再構築 その24 CentOS 5.3 メールサーバー構築(メールアカウント作成編)
自宅サーバー再構築 その25 CentOS 5.3 メールサーバー構築(Thunderbird設定編)
自宅サーバー再構築 番外編その1 CentOS 5.3 のリリースと導入済みソフトウェアのアップデート


“自宅サーバー再構築 その23 CentOS 5.3 メールサーバー構築(SSL導入編)”にコメントはありません

コメントする