Let’s Encrypt SSLの導入

SSLとは

インターネット上での盗聴や改竄を防ぐ方法として、SSLが使われている。SSLは、クライアントとサーバとのデータ通信を暗号化する。

SSLを導入するには、SSLサーバ証明書をサーバにインストールする必要がある。SSLサーバ証明書は、信頼のおける第三者機関、認証局によって、ウェブサイトの運営者が正しい運営者であるか、審査を行なってから発行される。

SSLサーバ証明書は、多くが有料であるが、無料で発行できるところもある。その認証局が、Let’s Encryptである。

SSLサーバ証明書には、「DV」「OV」「EV」と呼ばれる3つのレベルがある。

DV

Domain Validation、ドメイン認証。SSLの申請者がそのドメインの所有者であることを証明。ただし、そのドメインの所有者の実在性チェックはしない。

OV

Organization Validation、企業認証。SSLの申請者がそのドメインの管理者である企業、団体であり、その実在性をチェック、証明している。

EV

Extented Validation、EV認証。OV認証以上に、そのドメインの管理者である企業、団体の実在性をより厳格にチェック、証明している。

EV > OV > DVの順に認証レベルが高くなっているが、価格も高くなる。

Let’s Encrypt認証局では、標準的なドメイン認証証明書が発行される。その証明書は、Webサーバやメールサーバに設定して使用することができる。有効期限は90日間であり、使用し続けるためには、定期的に更新するように設定する必要がある。

パッケージのインストール

まず、必要なパッケージ、mod_sslとpython36をインストールする。

dnf install mod_ssl python36

certbotをダウンロードして、実行できるようにする。

wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto
certbot-auto

certbot-autoで不足しているパッケージがインストールされる。

Webサーバ証明書の取得

certbot-autoを実行し、証明書を取得する。この時、必要なパッケージがインストールされていなければ、インストールも行われる。取得された証明書は、/etc/letsencrypt/live以下に格納される。

Webサーバが動作している状況でWebRootが/var/www/htmlのhogehoge.comの証明書取得

certbot-auto certonly --webroot -w /var/www/html -d hogehoge.com

Webサーバが動作している状況でWebRootが/var/www/htmlのhogehoge.comとwww.hogehoge.comの証明書取得

certbot-auto certonly --webroot -w /var/www/html -d hogehoge.com -d www.hogehoge.com

Webサーバが動作していない状況でWebRootが/var/www/htmlのhogehoge.comの証明書取得

certbot-auto certonly --standalone --webroot -w /var/www/html -d hogehoge.com

WebサーバへのSSL設定

必要なパッケージをインストールする

dnf install mod_ssl mod_http2 libnghttp2
SSLの設定ファイルssl.confを編集する。

vi /etc/httpd/conf.d/ssl.conf

<VirtualHost _default_:443>
#SSLCipherSuite PROFILE=SYSTEM
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256

#SSLProxyCipherSuite PROFILE=SYSTEM

#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/letsencrypt/live/hogehoge.com/cert.pem

#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/letsencrypt/live/hogehoge.com/privkey.pem

#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
SSLCertificateChainFile /etc/letsencrypt/live/hogehoge.com/chain.pem

httpdを再起動する。

systemctl restart httpd

メールサーバ用証明書の取得

メールサーバがmail.hogehoge.comとする。

certbot-auto certonly --standalone -d mail.hogehoge.com -m admin@hogehoge.com --agree-tos -n

メールサーバへのSSL設定

PostfixのSSL設定を行う。

vi /etc/postfix/main.cf

smtpd_use_tls = yes
smtp_tls_security_level = may

smtpd_tls_cert_file = /etc/letsencrypt/live/mail.hogehoge.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.hogehoge.com/privkey.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s

vi /etc/postfix/master.cf

smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

続いて、DovecotにもSSL設定を行う。

vi /etc/dovecot/conf.d/10-ssl.conf

ssl = required

ssl_cert = /letsencrypt/live/mail.hogehoge.com/fullchain.pem
ssl_key = /letsencrypt/live/mail.hogehoge.com/privkey.pem

vi /etc/dovecot/conf.d/10-master.conf

service imap-login {
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}

PostfixとDovecotのサービスを再起動して、設定を反映させる。

systemctl restart postfix
systemctl restart dovecot

証明書自動更新設定

vi /etc/cron.d/certbot

00 03 01 */2 * root /usr/local/bin/certbot-auto renew --force-new && sytemctl restart httpd && systemctl restart vsftpd && systemctl restart dovecot && systemctl restart postfix && systemctl restart sshd
%d人のブロガーが「いいね」をつけました。