ArchLinuxはネットワークと独自ドメインまで設定ずみとします
目標と準備
目標
認証局が発行したSSL証明書をサーバーに設定し、nginxでHTTPS通信を、PostfixとDovecotでSMTPS/IMAPS/POP3Sを使えるようにします。
環境
さくらVPS + ArchLinux + OpenSSL + Postfix + Dovecot + nginx
準備
ドメインの実在確認にそのドメインのメールアドレスが必要になるので、設定しておきます。
また、ArchLinux、Postfix、Dovecot、nginxはインストール済みで、SSL以外の設定はすんでいるものとします。
SSL証明書の取得と設定
認証にも種類はいろいろありますが。
- ドメイン認証 - ドメインの所有のみを証明
- 組織認証 - 組織が法的に存在しているかを証明
- EV認証 - 組織が物理的に存在しているかなど、くわしく証明
今回は、一番簡単な1のドメイン認証を取得します。
また、RapidSSLと、その代理店としてSSLBOXを使いました。
年額1,500円!即日発行!
OpenSSLのインストール
pacman -Sy openssl
サーバー暗号鍵とCSRをつくる
サーバー暗号鍵をつくります。
また、SSL認証局にCSR(証明書署名リクエスト)を提出する必要があるので、つくります。
サーバーで公開鍵と暗号鍵を生成し、公開鍵に所在地情報などを加えたものがCSRです。
cd SSL証明書を置きたいディレクトリ
openssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:都道府県
Locality Name (eg, city) []:市町村
Organization Name (eg, company) [Internet Widgits Pty Ltd]:社名など
Organizational Unit Name (eg, section) []:部署名
Common Name (e.g. server FQDN or YOUR name) []:FQDNなど
Email Address []:認証に使うメールアドレス
A challenge password []:空改行
An optional company name []:空改行
RapidSSLの場合、2048bitのRSAキーで生成します。
証明局にCSRを送ってサーバー証明書を取得する
前段で生成したCSRをコピペして証明局に送信すると、
- サーバー証明書
がメールの末尾にくっつけられて送られてくるので確認しておきます。
また、メールで案内されるRapidSSLのサイトから
- 中間証明書
をダウンロードしておきます。
サーバー証明書を設定する
送られてきたサーバー証明書と、認証局の中間証明書を設定します。
PEMファイルとしてひとつにまとめます。
nano example.com.cer
サーバー証明書をコピペして保存
nano intermediate.cer
中間証明書をコピペして保存
cat example.com.cer intemediate.cer > example.com.pem
chmod 400 example.com.key example.com.pem
Postfixの設定
SASL認証を使い、経路はTLSで暗号化します。
Postfixはインストールされているものとします。
CyrusSASLのインストール
pacman -S cyrus-sasl
CyrusSASLの設定
nano /usr/lib/sasl2/smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: plain login cram-md5
chown postfix:postfix /etc/sasldb2
PostfixのSASL/TLS関係の設定
設定は適宜読み替えてください。
nano /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = no
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = ディレクトリ/認証ファイル.pem
smtpd_tls_key_file = ディレクトリ/暗号鍵ファイル.key
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
nano /etc/postfix/master.cf
submission inet n - n - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated, reject
-o milter_macro_daemon_name=ORIGINATING
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
CyrusSASLとPostfixを起動(再起動)して、送信確認もしておきます。
systemctl start saslauthd
systemctl enable saslauthd
systemctl restart postfix
Dovecotの設定
POP3S/IMAPSを使えるように設定します。
Dovecotはインストールされているものとします。
DovecotのTLSまわりの設定
nano /etc/dovecot/conf.d/10-ssl.conf
ssl_cert = <ディレクトリ/証明書ファイル.pem
ssl_key = <ディレクトリ/暗号鍵ファイル.key
ssl = yes
nano /etc/dovecot/conf.d/10-master.conf
service imap-login {
inet_listener imaps {
port = 993
ssl = yes
}
}
service pop3-login {
inet_listener pop3s {
port = 995
ssl = yes
}
}
Dovecotを再起動して受信テストをしておきます。
systemctl restart dovecot
nginxの設定
HTTPSを使えるようにします。
nginxはインストールされているものとします。
nano /etc/nginx/nginx.conf
http {
server {
ssl on;
ssl_certificate ディレクトリ/認証ファイル.pem;
ssl_certificate_key ディレクトリ/暗号鍵ファイル.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:5m;
ssl_session_timeout 5m;
ssl_ciphers ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-RSA-RC4-SHA:ECDHE-ECDSA-RC4-SHA:AES128:AES256:RC4-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK;
ssl_prefer_server_ciphers on;
}
}