KUSANAGI for ConoHaとLet’s Encryptの小粋な使い方

ConoHaさんはかわいいですよ?

この記事は、ConoHa Advent Calender の13日目の記事になります。
ということで、KUSANAGIの中の人宮﨑です。KUSANAGIは、超高速WordPress仮想マシンということで、WordPressを高速に動作させるようセットアップ済みの環境(OSイメージ)を色々なクラウド事業社さんに提供しています。
もちろん、KUSANAGI for ConoHaでConoHaで動きます。
この www.myzkstr.com も ConoHa 上で動いています。

Let’s EncryptのSSL証明書をHTTPS以外で使用してみる。

KUSANAGIでは、Let’s Encryptが提供する無償SSL証明書を取得し、HTTPSの環境を簡単にセットアップする機能を提供しています。
このLet’s EncryptのSSL証明書は期限が90日と商用SSL証明書に比べると短いのですが、Let’s Encryptのクライアントで更新することで継続的に使用できます。もちろん、KUSANAGIではcronで定期的にSSL証明書の更新を行います。
さて、このSSL証明書ですが、HTTPS接続以外にも使用用途があります。ということで、いくつか紹介します。
ここでは、KUSANAGIでSSLの証明書を取得済みとして説明します。

SMTPサーバPostfixでTLS

SMTPはメールを送受信するサービスですが、歴史が古いプロトコルなため基本はプレーンテキストでの通信となり、内容を傍受可能な状態になります。
近年(といっても21世紀に入ってから)では、SMTP over SSLやSTARTTLSの機能を組み込み、SMTPで暗号化通信を行うことは一般的になりました。
このSSL通信では、当然のようにサーバSSL証明書が必要になりますので、Let’s Encrypt で取得したSSL証明書を利用してみましょう。

Let’s EncryptのSSL証明書

Let’s EncryptでSSL証明書を取得すると、以下のように証明書関連ファイル(実際にはsymbolic link)が生成されます。

サーバ証明書 /etc/letsencrypt/live/www.myzkstr.com/cert.pem
中間証明書 /etc/letsencrypt/live/www.myzkstr.com/chain.pem
サーバ証明書+中間証明書 /etc/letsencrypt/live/www.myzkstr.com/fullchain.pem
秘密鍵 /etc/letsencrypt/live/www.myzkstr.com/privkey.pem

Postfixの設定

KUSANAGIのベースOSであるCentOS7には、あらかじめPostfixがインストールされています。ただし、SMTP-AUTHを使用するため、以下のパッケージを yumでインストールしてください。

postfixの設定ファイル、/etc/postfix/main.cf に以下の設定を追記します。
以下は例ですので、鵜呑みにせずに設定内容を吟味してください。真に必要な設定は SSL/TLSの設定とSMTP-AUTHの部分で、そのほかの部分はSMTP送受信を制限する設定になります。

SMTP over SSL接続をするには、smtps(465番ポート)の設定が必要なので、以下のように /etc/postfix/master.conf を設定します。

postfixをrestartすれば、設定が反映されているはずです。

STARTTLSの確認方法

SMTP(25番ポート)にnetcatなどで接続し、EHLO localhost と打ってSTARTTLSが入っていれば、STARTTLS接続できます。
SMTP-AUTHの設定もここで確認できます。crypt済みのpamの情報をAUTHとして使っているので、当たり前ですがCRAM-MD5とかは使えません。

SMTPSの確認方法

SMTPS(465番ポート)の場合は、openssl コマンドで確認します。設定したSSL証明書で接続されていることが分かります。

POP3/IMAPサーバdovecotでTLS

SMTPと同様に、受信したメールをMUA(メールクライアント)から取得する際、POP3やIMAPを使用しますが、近年SSL接続を経由するのが一般的です。
CentOS7で標準的なPOP3/IMAPサーバのdovecotで、Let’s EncryptのSSL証明書を使用してみましょう。

dovecotの設定

SSL証明書の設定は、/etc/dovecot/conf.d/10-ssl.conf に以下の設定を追記します。
中間証明書+サーバ証明書である fullchain.pem を使用します。

これで、POP3 over SSLや IMAP over SSLが使用できます。
非SSLのPOP3やIMAPを停止するには、/etc/dovecot/conf.d/10-master.conf で、以下のようにportを0とするとよいでしょう。

POP3 over SSLの確認

POP3 over SSLのテストは、openssl コマンドで 995版ポートに接続します。設定したSSL証明書で接続されていることが分かります。
“+OK Dovecot ready.” と出ていれば、POP3で接続できています。quit と打てば接続を終了します。

IMAP4 over SSLの確認

IMAP4 over SSLのテストは、openssl コマンドで、993版ポートに接続します。
” Dovecot ready.”の文字を確認します。”a logout” と打てば接続を終了します。

まとめ

SMTP/POP3/IMAP4 over SSLで検索すると、大抵は自己証明SSL証明書を生成する手順をとりますが、通信相手が正しいことの保障とはなりません。
Let’s EncryptのSSL証明書を使用することで、中間CAを通して認証されるため、送信元から自分への通信が正しいことを保証できるため、より望ましい状態となります。
今どきは、自分でメールサーバを立てることは少ないと思いますが、参考にしていただけると幸いです。