Apacheに無料サーバー証明書Let’s Encryptをインストールする方法まとめ

Apache

Let’s Encryptは無料で手に入るサーバー証明書ということで大人気。

ブログサイト運営には必須なサービスになりました。

しかも無料というメリットだけじゃなく、実は有料のサーバー証明書に比べて、サーバー証明書の発行も圧倒的に簡単なんです。

もはやLet’s Encryptを使わない理由はないですね。

今回はLet’s Encryptでサーバー証明書を発行して、Apacheにインストールするまでの手順をまとめます。

Let’s Encryptエージェントのインストール

Let’s Encryptを使うには、サーバーにLet’s Encryptエージェント(Certbot)をインストールする必要があります。

本記事では、CentOS 7.2へインストールする手順を説明します。

まず、サーバーにSSHで接続し、rootになります。

yumでEPELをインストールします。

# yum install epel-release

次に、Certbot本体をyumでインストールします。

# yum install certbot python-certbot-apache

これでエージェントのインストールは完了です。

なお、VPSサービスによっては上記コマンドでエラーとなり、Let’s Encryptエージェントがインストールできません。インストールできない環境の場合は、以下の記事を参照してください。

サーバー証明書の発行

エージェントがインストールされたら、サーバー証明書を発行できます。

サーバー証明書の発行はcertbotコマンドで行います。

# certbot certonly --webroot -w /var/www/html/ -d egatech.net

-wオプションには、Apacheのドキュメントルートを指定します。Apacheのデフォルト設定では/var/www/html/です。ドキュメントルートを別ディレクトリに変更している場合は、環境に合わせて設定してください。

また、-dオプションではサーバー証明書を発行したいホスト名を指定します。

certbotコマンドを実行すると、以下の画面のようになります。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): info@egatech.net

Let’s Encryptからの通知メールを受け取るメールアドレスを入力します。証明書期限切れ通知メールなどが送信されるので、確実に受信可能なメールアドレスを入力しましょう。

メールアドレス入力後は、規約同意です。

Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org

-------------------------------------------------------------------------------
Please read the Terms of Service at

404 Page not found - Let's Encrypt
Let's Encrypt is a free, automated, and open certificate authority brought to you by the nonprofit Internet Security Res...
You must agree in order to register with the ACME server at https://acme-v01.api.letsencrypt.org/directory ------------------------------------------------------------------------------- (A)gree/(C)ancel: A

「A」で次の画面に進みます。

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: Y

Let’s Encryptプロジェクトに参加するかどうかの質問です。「Y」「N」どちらでも問題ないです。私は「Y」にしました。

Starting new HTTPS connection (1): supporters.eff.org
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for egatech.net
Using the webroot path /var/www/html for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/egatech.net/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/egatech.net/privkey.pem
Your cert will expire on 2018-06-29. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
Donating to EFF:                    https://eff.org/donate-le

無事、サーバー証明書が発行されました。

作成されたファイルは以下の場所にあります。

サーバー証明書/etc/letsencrypt/live/ホスト名/fullchain.pem
秘密鍵/etc/letsencrypt/live/ホスト名/privkey.pem
中間証明書/etc/letsencrypt/live/ホスト名/chain.pem

Apacheの設定変更

/etc/httpd/conf.d/ssl.confを編集し、サーバー証明書や秘密鍵のファイルパスを変更します。

<VirtualHost *:443>
  ServerName egatech.net
  DocumentRoot /var/www/html
  ErrorLog logs/ssl_error_log
  CustomLog logs/ssl_access_log combined

  SSLEngine on
  SSLProtocol all -SSLv2 -SSLv3
  SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4
  SSLCertificateFile /etc/letsencrypt/live/egatech.net/cert.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/egatech.net/privkey.pem
  SSLCertificateChainFile /etc/letsencrypt/live/egatech.net/chain.pem
</VirtualHost>

Apacheを再起動して完了です。

# systemctl restart httpd

まとめ

昔はサーバー証書といえばベリサインくらいしかなく、価格も10万円近くで個人には全く手が出せなかった・・・。

それが今は無料で完了できますよね。

いい時代になりました!