LoginSignup
7
7

More than 5 years have passed since last update.

ArchLinuxにおてがるにSSL証明書を設定してPostfix/Dovecotとnginxで使う

Last updated at Posted at 2014-11-04

ArchLinuxはネットワークと独自ドメインまで設定ずみとします

目標と準備

目標

認証局が発行したSSL証明書をサーバーに設定し、nginxでHTTPS通信を、PostfixとDovecotでSMTPS/IMAPS/POP3Sを使えるようにします。

環境

さくらVPS + ArchLinux + OpenSSL + Postfix + Dovecot + nginx

準備

ドメインの実在確認にそのドメインのメールアドレスが必要になるので、設定しておきます。
また、ArchLinux、Postfix、Dovecot、nginxはインストール済みで、SSL以外の設定はすんでいるものとします。

SSL証明書の取得と設定

認証にも種類はいろいろありますが。

  1. ドメイン認証 - ドメインの所有のみを証明
  2. 組織認証 - 組織が法的に存在しているかを証明
  3. 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をコピペして証明局に送信すると、

  1. サーバー証明書

がメールの末尾にくっつけられて送られてくるので確認しておきます。
また、メールで案内されるRapidSSLのサイトから

  1. 中間証明書

をダウンロードしておきます。

サーバー証明書を設定する

送られてきたサーバー証明書と、認証局の中間証明書を設定します。
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;
  }
}
7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7