アクティブなCloudflareサイトのLet's Encrypt SSL証明書を認証する方法を説明します。
概要
このガイドは、こちらのドキュメントに記述される公式Let's Encryptのクライアントで検証するために、Webrootの方法をどう使うかについて詳しい補足説明が記載されています:https://letsencrypt.readthedocs.org/en/latest/using.html#webroot
なお、Let's Encrypt クライアントによってACME認証に使われるデフォルトの方法は、DVSNIの方法を活用します。当社のEdgeでSSL (TLS)を終了するため、これはCloudflareが有効になっているドメインでは失敗となります。ACMEサーバーはクライアントがオリジンでクライアントが提示する証明書を見ることはありません。DNSまたはHTTPといった代替のACME検証方法を使用すると、Cloudflareが有効化されたときに、正常に完了します。
HTTP認証
Cloudflareで、すでにアクティブになっているサイトで最初にLet’s Encryptを設定する際、正しく検証する、証明書と秘密鍵のペアを取得することを必要とする全てが、検証するためのWebrootメソッドを使用します。
- Let’s Encryptクライアントをダウンロードし、ダウンロードディレクトリに変更します:
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt/
- 自動インストールのスクルプとを実行します:
./letsencrypt-auto
letsencrypt
クライアントをCertonly
コマンドと--webroot
フラッグとともに使用して、HTTP認証を用いた証明書/キーのペアを認証、および取得することができるようになりました。コマンドの例は次のようになります:/root/.local/share/letsencrypt/bin/letsencrypt certonly --webroot --webroot-path /usr/share/nginx/html/ --renew-by-default --email email@host.tld --text --agree-tos -d example.tld -d www.example.tld
どこで- --webroot-path
- サイトが位置する(例で使われるNGINX)サーバー上のディレクトリ
- --renew-by-default
- ドメインが以前に取得した証明書のスーパーセットである時、デフォルトで更新を選択する
- 登録と回復についての連絡先にしようされるEメール
- --text
- テキスト出力を表示する
- --agree-tos
- Let’s Encryptのサブスクライバー契約に同意する
- -d
- ホスト名を特定して、SANに追加する。
- この認証方法を正しく完了すると、次のようなテキストが表示されます:
無事完了です!証明書とチェーンが/etc/letsencrypt/live/example.tld/fullchain.pemに保存されました。証明書の有効期限は2016-03-03までです。将来、証明書の新バージョンを取得するために、もう一度Let's Encryptを実行します。
- なお、証明書とキーの両方が
/etc/letsencrypt/live/example.tld/
に保存されます。両方が取得されたら、手動で仮想ホストをアップデートしてこのキー/証明書のペアを使います。
Cloudflareのダッシュボードで必ずドメインのページルールをチェックし、認証URLのリクエストがリダイレクトされるか、HTTPSを介してのみアクセス可能となる方法がないことを確認してください。
更新
更新時間については、letsencrypt更新
コマンドを使うと、証明書が、Cloudflare設定が変更することなく、正しく更新されるはずです。条件は次の通りです:
- 更新のためにletsencryptクライアントが使用する.conf ファイルには、
認証システム=Webroot
特定があります。 - 認証URLは、HTTP経由でアクセス可能です。
- このURLに適用されるURLはありません。
また、上記の手順を繰り返すと、新しい証明書も発行されます。