Let's Encrypt 総合ポータル

Let's Encrypt の使い方

更新

公開ベータプログラムについて

このページの解説は、公開ベータプログラム(Public Beta Program)に対応した最新のものです。

日本時間の 2015年12月4日 午前3時 に、Let's Encrypt の限定ベータプログラム(Limited Beta Program)が終了し、公開ベータプログラム(Public Beta Program)が始まりました。

独自ドメインとWebサーバがあれば、下記の手順で、誰でも簡単に Let's Encrypt の SSL/TLS 証明書を取得することができます。

※限定ベータプログラム(Limited Beta Program)実施期間中は、Let's Encrypt Beta Participation Request から Let's Encrypt Beta Program への登録をリクエストする必要がありましたが、公開ベータプログラムの開始に伴い、登録は不要となりました。

更新

Let's Encrypt クライアントの準備

Let's Encrypt は、専用のクライアントソフトウェアを使用することで、SSL/TLS サーバ証明書の取得・更新作業を自動化できる仕組みとなっています。

1. ダウンロード

Let's Encrypt クライアントソフトウェアをダウンロードしたいディレクトリに移動してから、次のコマンドを実行します(root権限は不要)。

CLI に入力するコマンド:
$ git clone https://github.com/letsencrypt/letsencrypt

※バージョン管理システム Git(ギット)を用いて、リモートリポジトリを丸ごと複製(Clone)してローカルにダウンロードするコマンドです。

コマンドを実行すると、ディレクトリ「letsencrypt」が自動的に作成され、その中にクライアントソフトウェアがダウンロードされます(自動的に実行されることはありません)。

以下は、コマンド実行後に表示されるメッセージです。

コマンド実行後 CLI に表示されるメッセージ:
Initialized empty Git repository in /【カレントディレクトリ】/letsencrypt/.git/ remote: Counting objects: 23922, done. remote: Compressing objects: 100% (133/133), done. remote: Total 23922 (delta 78), reused 0 (delta 0), pack-reused 23788 Receiving objects: 100% (23922/23922), 6.24 MiB | 1.40 MiB/s, done. Resolving deltas: 100% (16691/16691), done.

2. テスト実行

Let's Encrypt クライアントソフトウェアをダウンロードしたディレクトリに移動します。

$ cd letsencrypt/

その後、次のコマンドを入力して、Let's Encrypt クライアントソフトウェアを実行できる環境(Python など)が整っているかをテストします。

※root権限が必要なため、sudo よりパスワードの入力が要求されます。

※Let's Encrypt クライアントソフトウェアを実行すると、パッケージ管理システム(yum など)によって「python」「dialog」「libffi」「openssl」などのパッケージが自動的にアップデートまたは新規インストールされます。厳格にパッケージのバージョンを管理しているサーバの場合には、ご注意ください。

CLI に入力するコマンド:
$ ./letsencrypt-auto --server \ https://acme-v01.api.letsencrypt.org/directory --help

Let's Encrypt クライアントソフトウェアの実行環境が整い、正常に実行できた場合には、Let's Encrypt のヘルプが表示されます。

更新

SSL/TLS サーバ証明書の取得

Let's Encrypt で SSL/TLS サーバ証明書を取得する際には、一般の認証局で SSL/TLS サーバ証明書を取得する場合とは異なり、秘密鍵・公開鍵・署名リクエスト(CSR)を手動で生成する必要はありません。これらの作業は、Let's Encrypt クライアントソフトウェアが自動的に行います。

1. DNS設定と準備

Let's Encrypt のサーバから、入力したドメイン名を正引き(DNSのAレコードの参照)したIPアドレスの TCP Port 80 に接続することで、ドメイン所有者であることの認証が行われます。

そのため、Let's Encrypt クライアントソフトウェアは、インターネットから当該ドメイン名にアクセスした際に接続されるサーバ(DNSのAレコードで指定されたIPアドレスのサーバ)で実行する必要があります。また、ルータやファイアウォールで TCP Port 80 をブロックしている場合、予めインターネットからの接続(インバウンド)を許可する設定に変更する必要があります。

2. Let's Encrypt クライアントの実行

次のコマンドを入力すると、Let's Encrypt 発行の SSL/TLS サーバ証明書を取得するためのプログラムが起動して、画面が CLI から TUI に切り替わります。

CLI に入力するコマンド:
$ ./letsencrypt-auto certonly -a standalone \ -d letsencrypt.jp -d www.letsencrypt.jp \ --server https://acme-v01.api.letsencrypt.org/directory

※オプション「-d」で指定されている「letsencrypt.jp」「www.letsencrypt.jp」は当サイトのドメイン名・サブドメイン名ですので、サーバ証明書の取得を希望するドメイン名・サブドメイン名(ご自身で所持されているドメイン名)に置き換えてください。

※限定ベータプログラム(Limited Beta Program)の終了に伴い、オプション「--agree-dev-preview」は不要となりました。

3. クライアントの自動アップデート

Let's Encrypt クライアントソフトウェアを実行すると、新しいバージョンのクライアントソフトウェアの有無が自動的にチェックされ、必要に応じてアップデートされます。

アップデートには数秒~数十秒程度かかりますので、しばらくお待ちください。

アップデート中に CLI に表示されるメッセージ:
Updating letsencrypt and virtual environment dependencies.......

4. メールアドレスの入力

Let's Encrypt クライアントが起動すると、「Enter email address (used for urgent notices and lost key recovery)」という入力欄が表示されるので、メールアドレスを入力します。

ここで入力したメールアドレスは、緊急の通知や鍵を紛失したときの復旧に使われます。

メールアドレスを入力して「了解」を選択すると、CLI に次のメッセージが出力されます。

TUI が終了して CLI に切り替わったときに表示されるので、現時点では気にしなくて構いません。

CLI に出力されるメッセージ:
IMPORTANT NOTES: - If you lose your account credentials, you can recover through e-mails sent to Your_Email_Address@example.jp. - Your account credentials have been saved in your Let's Encrypt 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 Let's Encrypt so making regular backups of this folder is ideal.

5. 利用規約への同意

Let's Encrypt の利用規約(Terms of Service)への同意が求められます。

問題が無ければ、Agree(同意)を選択して、次のステップへ進みます。

Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf. You must agree in order to register with the ACME server at https://acme-staging.api.letsencrypt.org/directory

6. ドメイン名の入力

Let's Encrypt クライアントの実行時に、オプション「-d」で SSL/TLS サーバ証明書の取得を希望するドメイン名を指定しなかった場合には、TUI で入力が求められます。

オプション「-d」が指定されていた場合には、この画面は表示されずに次のステップに進みます。

Please enter in your domain name(s) (comma and/or space separated)

7. Webサーバの一時停止

TCP Port 80 を Apache や nginx などのWebサーバソフトウェアが Listen している場合には、下記のエラーメッセージが表示されます。

※下記のエラーメッセージが表示されて Let's Encrypt クライアントが終了された場合であっても 4. メールアドレスの入力5. 利用規約への同意 の内容は保存されています。そのため、Webサーバの停止後に Let's Encrypt クライアントを再度実行すると、すぐに SSL/TLS サーバ証明書の取得処理が始まります。ただし、オプション「-d」で SSL/TLS サーバ証明書の取得を希望するドメイン名を指定しない場合には、TUI で入力が求められます。

TUI に表示されるエラーメッセージ:
The program httpd (process ID 30656) is already listening on TCP port 80. This will prevent us from binding to that port. Please stop the httpd program temporarily and then try again.

※表示されるエラーメッセージにおける httpd の process ID は環境により異なります。

CLI に出力されるエラーメッセージ:
At least one of the (possibly) required ports is already taken.

Let's Encrypt クライアントソフトウェアは、ドメイン所有者であることの認証に TCP Port 80 を使用しているため、SSL/TLS サーバ証明書を取得プロセスを完了させるためには、Webサーバを一時的に終了させる必要があります。

下記のコマンドを入力して、Webサーバを一旦停止させます。

※Webサーバが TCP Port 80 以外のみ を Listen している場合には、停止する必要はありません。

※OS や設定によって、Webサーバを停止するコマンドは異なります。

CLI に入力するコマンドの例:
$ sudo service httpd stop

その後、Let's Encrypt クライアントソフトウェアを再度実行します。

CLI に入力するコマンド:
$ ./letsencrypt-auto certonly -a standalone \ -d letsencrypt.jp -d www.letsencrypt.jp \ --server https://acme-v01.api.letsencrypt.org/directory

※オプション「-d」で指定されている「letsencrypt.jp」「www.letsencrypt.jp」は当サイトのドメイン名・サブドメイン名ですので、サーバ証明書の取得を希望するドメイン名・サブドメイン名(ご自身で所持されているドメイン名)に置き換えてください。

※限定ベータプログラム(Limited Beta Program)の終了に伴い、オプション「--agree-dev-preview」は不要となりました。

Let's Encrypt クライアントソフトウェアによる SSL/TLS サーバ証明書の取得プロセスは通常数秒程度で完了します。そのため、SSL/TLS サーバ証明書の取得処理が完了した直後に停止させていたWebサーバを起動することで、多くの場合、ダウンタイム(Webサーバを一時停止している時間)を十数秒程度に抑えられます。

8. SSL/TLS サーバ証明書の取得完了

SSL/TLS サーバ証明書の取得が完了すると「/etc/letsencrypt」ディレクトリに自動的に保存されます。

そして、TUI から CLI に切り替わり、下記のメッセージが表示されます。

CLI に出力されるメッセージ:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/letsencrypt.jp/fullchain.pem. Your cert will expire on 2016-02-16. To obtain a new version of the certificate in the future, simply run Let's Encrypt again.

※メッセージの letsencrypt.jp には取得したドメイン名、2016-02-16 には取得した Let's Encrypt 発行の SSL/TLS サーバ証明書の有効期限が入ります。

7. Webサーバの一時停止 で Webサーバを終了させていた場合には、忘れずに起動させておきましょう。

CLI に入力するコマンドの例:
$ sudo service httpd start

取得した証明書等の 実体 は、下記の場所に保存されます。

サーバ証明書(公開鍵)
/etc/letsencrypt/archive/ドメイン名/certN.pem
中間証明書
/etc/letsencrypt/archive/ドメイン名/chainN.pem
サーバ証明書と中間証明書が結合されたファイル
/etc/letsencrypt/archive/ドメイン名/fullchainN.pem
秘密鍵
/etc/letsencrypt/archive/ドメイン名/privkeyN.pem

※ファイル名の N には、取得した証明書等の番号(発行順で連番)が入ります。

※Let's Encrypt で当該ドメインの証明書を発行したのが1回目の場合には、ファイル名の N1 となります。

※既に証明書等が保存されている状態で再度証明書等を取得した場合には、ファイル名の N2 以上の新しい番号で証明書等が保存されます。古い証明書等が上書きされることはありません。

また、上記の証明書等への シンボリックリンク が、下記の場所に作成されます。

サーバ証明書(公開鍵)
/etc/letsencrypt/live/ドメイン名/cert.pem
中間証明書
/etc/letsencrypt/live/ドメイン名/chain.pem
サーバ証明書と中間証明書が結合されたファイル
/etc/letsencrypt/live/ドメイン名/fullchain.pem
秘密鍵
/etc/letsencrypt/live/ドメイン名/privkey.pem

※既に証明書等が保存されている状態で新しい証明書等を取得した場合には、シンボリックリンクのリンク先のパスが新しい証明書等に変更されます。

※Apache や nginx などのWebサーバの設定で SSL/TLS の証明書等のファイルを指定する際に、シンボリックリンクで指定しておくと、証明書等の更新時にWebサーバの設定ファイルの書き換えが不要となります。

Menu
ページトップへ