Let's EncryptのSSL証明書を使ってみた
Let's Encryptについて
Let's Encryptは2016年4月に正式に開始された認証局で、無料で利用できるSSL証明書を提供しています。
Let's Encryptのコマンドライン、certbotを使用するとSSL証明書の取得や更新が行え自動化できるようになります。
環境
- サーバー : さくらのVPS(CentOS7)
- Webサーバ:nginx
Let's Encryptで取得したSSL証明書を開発用のサーバーにインストールしてみます。
certbotをインストール
証明書の取得や更新で使用するcertbotをインストールします。
certbot.eff.orgの手順を参考にし作業を進めてみます。
NginxとCentOS7なので、Nginx on CentOS/RHEL 7を参考に進めました。
Certbotをインストール
$ sudo yum install python2-certbot-nginx
証明書の取得
certbotコマンドで証明書を取得
$ sudo certbot --nginx
これを実行するとNginxの設定を自動的に編集しすぐにhttpsでアクセスできるようになります。
こんな感じ
$ sudo certbot --nginx
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for kuru:
ログイン中のユーザーのパスワードを入力する。
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):
メールアドレスを入力する。
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel:
利用規約に同意する。
-------------------------------------------------------------------------------
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:
どちらか選択する。
Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: hoge1.atotok.jp
2: hoge2.atotok.jp
3: hoge3.atotok.co.jp
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1
nginxに設定されているドメインが表示されるので、SSL証明書を設定したいドメインを選択する。
これで完了!
httpsでアクセスできるになりました。
簡単!
/etc/nginx/conf.dの設定ファイルを確認するとssl関係の設定が追加されています。
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/[選択したドメイン名]/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/[選択したドメイン名]/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
手動でNginxの設定を変更したい場合は、 certonlyを指定して実行します。
$ sudo certbot --nginx certonly
証明書の更新
次のコマンドで証明書の自動更新をテストできます。
$ sudo certbot renew --dry-run
次のコマンドを実行すると更新が必要な証明書を更新します。
$ sudo certbot renew
Let’s Encryptの証明書は90日間と期限が短いのでcronなどで自動更新するように設定します。