STARTTLSの基本
STARTTLSとは
STARTTLSという用語を聞いたことがあるでしょうか。主にメールやFTP、LDAPなどで利用されており、平文で通信しているプロトコルを暗号化するための仕組みです。STARTTLSを利用することで、通信内容が暗号化されるため、第三者による盗聴や改ざんを防げます。
STARTTLSは START
と TLS
がくっついた用語になります。 START
は平文での通信を開始する際に使われるコマンドで、 TLS
はTransport Layer Securityの略で、通信内容を暗号化するためのプロトコルです。つまり、 STARTTLS
は平文での通信を暗号化通信に切り替えるための仕組みをそのまま意味しています。
STARTTLSの仕組みとSSL/TLSの違い
たとえばSMTPの場合、STARTTLSは25番ポートで使われます。接続してきたクライアントから EHLO
というコマンドが送られてきたら、サーバーは 250 STARTTLS
という応答を返します。これは、クライアントがSTARTTLSに対応していることを示しています。その後、クライアントが STARTTLS
というコマンドを送ると、その後の通信内容が暗号化されます。
似たような仕組みとして、SSL/TLSが挙げられます。メール送信の場合は、465番ポートなどで定義されるSMTPSが知られています。SSL/TLSでは、最初の接続から暗号化通信が始まります。STARTTLSとSMTPSの違いは、STARTTLSが平文での通信を暗号化通信に切り替えるのに対し、SMTPSは最初から暗号化通信を行う点です。
SMTPSでは専用のポートを利用しますが、STARTTLSの場合は既存のポート(25番)を利用できます。STARTTLSは既存のインフラを活かしてセキュリティを高められるのがメリットです。ただし、最初の接続が平文で行われますので、その点を考慮しなければなりません。
STARTTLSでよく使用されるポート番号
STARTTLSは、既存の非暗号化通信を暗号化通信にアップグレードする技術であり、専用のポート番号を必要としません。そのため、従来からよく使われてきたポート番号がそのまま利用されます。
メール関連としては、以下のようになります。
プロトコル | 用途 | ポート番号 |
---|---|---|
SMTP | メール送信 | 25, 587 |
POP3 | メール受信 | 110 |
IMAP | メール受信 | 143 |
STARTTLSの設定と使用方法
STARTTLSの設定手順
メールサーバーとして有名なPostfixでSTARTTLSを有効にする手順を紹介します。
証明書の作成
まず、証明書を作成します。以下のコマンドを実行します。以下は10年間有効な独自の秘密鍵、証明書を作成する例です。もちろん、証明書の発行機関から取得・設定するのが本番運用では必要です。
openssl req -new -x509 -days 3650 -nodes -out /etc/postfix/cert.pem -keyout /etc/postfix/privkey.pem
設定ファイルの修正
Postfixの設定ファイル(/etc/postfix/main.cf
)を修正します。以下のように設定します。
# SMTPサーバーとしてのTLS設定 smtpd_tls_cert_file = /etc/postfix/cert.pem smtpd_tls_key_file = /etc/postfix/privkey.pem smtpd_tls_security_level = may smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_tls_protocols = !SSLv2, !SSLv3 # SMTPクライアントとしてのTLS設定 smtp_tls_security_level = may smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtp_tls_protocols = !SSLv2, !SSLv3
Postfixの再起動
設定ファイルを修正したら、Postfixを再起動します。利用している環境によってコマンドは異なりますので注意してください。
systemctl restart postfix
動作確認
たとえば、STARTTLSに対応しているGmail宛にメールを送信してみます。以下のようなログが残っていれば、STARTTLSが有効になっていることが確認できます。
postfix/smtp[11111]: TLS connection established to gmail-smtp-in.l.google.com: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
クライアントの設定
メールクライアント側の設定としては、以下の設定が必要です。
- ポート番号
25番、587番ポートのいずれかを指定します。 - 暗号化方式
TLSまたはSTARTTLSを選択します。
GmailでのSTARTTLS設定
GmailをWebブラウザで利用している場合には、特別な設定は不要です。ただし、Gmailに対してOutlookやThunderbirdなどのメールクライアントからメールを送信する場合には、以下の設定が必要です。
- IMAP設定
- サーバー名
imap.gmail.com - ポート番号
993 - 暗号化方式
SSL/TLS
- サーバー名
- SMTP設定
- サーバー名
smtp.gmail.com - ポート番号
587 - 暗号化方式
STARTTLS
- サーバー名
STARTTLSの確認方法
STARTTLSになっているかどうか確認する際には、以下のコマンドを利用します。
echo -e "EHLO test\nQUIT" | openssl s_client -starttls smtp -connect example.com:25
以下のような結果が返ってくれば、STARTTLSが有効になっていることが確認できます。
Connecting to 111.111.111.111 CONNECTED(00000006) depth=2 C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Global Root G2 verify return:1 : --- Certificate chain 0 s:CN=*.example.com i:C=US, O=DigiCert Inc, OU=www.digicert.com, CN=RapidSSL TLS RSA CA G1 a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256 v:NotBefore: Jul 1 00:00:00 2024 GMT; NotAfter: Jul 1 23:59:59 2025 GMT 1 s:C=US, O=DigiCert Inc, OU=www.digicert.com, CN=RapidSSL TLS RSA CA G1 i:C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Global Root G2 a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256 v:NotBefore: Nov 2 12:24:33 2017 GMT; NotAfter: Nov 2 12:24:33 2027 GMT --- Server certificate -----BEGIN CERTIFICATE----- MIIGHzCCBQegAwIBAgIQDjDXxv3Ek7mNuy7r4KRyOTANBgkqhkiG9w0BAQsFADBg : 6/LkcQ3rRL9Oxs7aEEBHM1zhX8mWKtjnVD1teA3Ns1xJ2cg= -----END CERTIFICATE----- subject=CN=*.example.com issuer=C=US, O=DigiCert Inc, OU=www.digicert.com, CN=RapidSSL TLS RSA CA G1 --- No client certificate CA names sent Peer signing digest: SHA256 Peer signature type: RSA-PSS Server Temp Key: ECDH, prime256v1, 256 bits --- SSL handshake has read 3840 bytes and written 899 bytes Verification: OK --- New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384 Server public key is 2048 bit This TLS version forbids renegotiation. Compression: NONE Expansion: NONE No ALPN negotiated Early data was not sent Verify return code: 0 (ok) --- 250 STARTTLS DONE
STARTTLSの証明書の確認と設定
STARTTLSに必要な証明書は、証明書の有効期限や発行元を確認する必要があります。以下のコマンドを利用して、証明書の情報を確認します。
openssl s_client -connect smtp.example.com:25 -starttls smtp | openssl x509 -noout -dates
結果は以下のように返ってきます。
Connecting to 111.111.111.111 depth=2 C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Global Root G2 verify return:1 depth=1 C=US, O=DigiCert Inc, OU=www.digicert.com, CN=GeoTrust TLS RSA CA G1 verify return:1 depth=0 CN=smtp.example.com verify return:1 250 STARTTLS notBefore=Oct 2 00:00:00 2024 GMT notAfter=Oct 23 23:59:59 2025 GMT
STARTTLSの代表的なトラブルと解決策
「must issue starttls command first」というエラーが出る
must issue starttls command first
というエラーは、サーバー側がSTARTTLSを要求しているにもかかわらず、クライアント側がSTARTTLSを実行していない場合に発生します。このエラーを解消するためには、クライアント側の設定でSTARTTLSが有効になっているか確認してください。
「starttls extension not supported by server」というエラーが出る
starttls extension not supported by server
というエラーは、上記とは逆でサーバー側がSTARTTLSをサポートしていない場合に発生します。このエラーを解消するには、サーバー側の設定でSTARTTLSが有効になっているか確認が必要です。
OutlookでのSTARTTLSトラブルと対策
クライアント側でよくあるのは、送信時にエラーになるというものです。この場合、まずはサーバーのアドレスとポート番号、暗号化方式を確認してください。また、設定が正しくてもサーバー側が対応していない場合もあります。この場合は、メールプロバイダーの設定を見直します。
もう一つは、Outlookのバージョンが古い場合に起こります。Outlook 2013では、送信のみSTARTTLSがサポートされています。受信を行う場合には、POP over SSLやIMAP over SSLを利用する必要があります。
STARTTLS導入によるセキュリティ向上
STARTTLSがメールセキュリティに与える影響
STARTTLSのメリットは、既存のリソース(25番ポートなど)を活かしてセキュリティを向上できる点です。ネットワーク設定を変更しないので、セキュリティポリシーを変更せずに済みます。STARTTLSは暗号化通信を行うので、メール送受信に関する盗聴や改ざんを防ぐことができます。
DKIMやSPF、DMARCとの連携
もちろん、STARTTLSだけでメールに関するセキュリティがすべて解決できる訳ではありません。メールを正しく、相手の届けるためのテクノロジーとしてSPFやDKIM、DMARCなどが知られています。これらの技術と組み合わせることで、よりセキュアなメール環境を構築できます。
Customers Mail CloudのSTARTTLSサポート
Customers Mail Cloud(CMC)では、送信先までの通信においてSTARTTLSによる暗号化をサポートしています。 より安全なメール送信を実現するためには、送信元からCMCまでの通信でもSTARTTLSを有効にすることが重要です。
例えば、Postfixをお使いの場合、STARTTLS対応の設定を行うことで、送信元からCMCへの通信が暗号化され、さらに安全なメール送信環境を構築できます。具体的な設定手順については、以下のマニュアルをご参照ください。
▶ PostfixでのSTARTTLS設定方法はこちら https://smtps.jp/docs/integrate/si/postfix/#starttls
これにより、メール通信全体のセキュリティが向上し、送信データの盗聴や改ざんのリスクを低減できます。安全な通信を確保するために、ぜひご確認ください。
まとめ
本記事では、STARTTLSの基本的な仕組みや設定方法、トラブル事例と解決策、他の技術と絡めたセキュリティ向上について解説しました。STARTTLSは、既存のリソースを活かしてセキュリティを向上できるため、メール送受信において重要な技術です。セキュリティを向上させるために、ぜひSTARTTLSを導入してください。
Customers Mail Cloudでは、STARTTLSをサポートしています。セキュリティを向上させるために、ぜひご利用ください。