Let’s Encryptの使い方

2019 年 7 月 16 日 by O谷

こんにちは、O谷です。

【Let’s Encrypt】って知ってますか?
以前、案件でSSL/TLSサーバ証明書の発行を自動化したいという要望があった際に利用したサービスです。
手順も纏めているのでぜひ参考にしてください。

●Let’s Encryptって?
SSL/TLSの暗号化通信に用いる証明書の認証局のひとつで
「無償で使える」「自動発行できる」が特徴です。
もちろん商用利用も可能ですが、注意しないといけないのは下記3点です。

  • ・発行できる証明書の認証レベルは一番低いDomain Validation(DV)
  • ・証明書には有効期限がある
  •  証明書は90日間の有効期限があるため、定期的に証明書を更新する必要があります。
  •  後述のrenewサブコマンドをcron実行しておけば、2か月毎に証明書を更新する事も可能です。
  • ・利用制限がある
  •  証明書の取得は1~2週間の内に一定回数までと制限されています。
  •  一定回数を超えた場合は1週間くらい待つ事しかできないので、
  •  試しに取得してみる場合はテストモードで実行しましょう。

●前提条件
・ドメイン登録
・DNS設定済

●環境情報
・CentOS7.1

●構築手順
1)Let’s Encryptサーバのクライアントであるcertbotパッケージをインストールします。

# yum install epel-release</span>
# yum install certbot python-certbot-apache</span>

※ certbotはepel-releaseリポジトリにあるため、リポジトリもインストール

2)SSL証明書の取得

# certbot certonly --standalone --agree-tos -d https://xxxx.jp -m xxxx@xxx.com -n --test-cert</span> 

※ 代表的なサブコマンドは以下の通り
run WEBサーバにサーバ証明書の取得とインストールを実施
certonly サーバ証明書の取得のみ実施
renew 期限切れが近い(30日未満)のサーバ証明書を自動更新
revoke 取得したサーバ証明書を失効させる

※ 代表的なオプションは以下の通り
–agree-tos Let’s Encrypt利用規約への同意
–standalone Certbot内臓のウェブサーバ経由でサーバ証明書を取得
–test-cert    テストモードで無効な証明書を取得。利用制限の取得回数にはカウントされない。
-d サーバ証明書を取得するドメイン名
-m 担当者のメールアドレス(トラブル時、証明書の更新期限前などに通知メールが届きます)
-n 対話型のやりとりを回避

Congratulations!と標準出力上に表示されれば、サーバ証明書の取得成功です。
取得した証明書は「/etc/letsencrypt/live」配下に作成されています。
– 実行結果 ———————————————–
IMPORTANT NOTES:
Congratulations! Your certificate and chain have been …

—————————————————————–

これだけです。簡単ですね。
今回はサーバ証明書を取得する部分だけ切り取って整理しましたが、
実際の案件ではサーバへのミドルウェア構築、ポータル構築、
サーバ証明書取得をansibleで自動化したので簡単にポータルを公開する事ができました。
紹介したもの以外にも色々な取得の仕方があるので、またどこかで紹介させて頂きます。

タグ:

TrackBack