From 8667d02499538c7fa080ac4f42c5a302d804fc7b Mon Sep 17 00:00:00 2001 From: kazu634 Date: Tue, 16 Apr 2019 16:47:05 +0700 Subject: [PATCH 01/11] Add link to "Lego" --- content/labs/infra/2019-04-14_how_to_use_Lego.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/labs/infra/2019-04-14_how_to_use_Lego.md b/content/labs/infra/2019-04-14_how_to_use_Lego.md index 0a39e8a..7ba1fe7 100644 --- a/content/labs/infra/2019-04-14_how_to_use_Lego.md +++ b/content/labs/infra/2019-04-14_how_to_use_Lego.md @@ -6,7 +6,7 @@ Description="Legoを用いたDNS経由でのSSL/TSL証明書取得について image="https://live.staticflickr.com/2554/4156026735_6b97110206.jpg" +++ -`lego`を用いてSSL/TSL証明書を取得する方法を説明します。ここではDNS認証でSSL/TSL証明書を取得する方法を説明します。 +[Lego](https://github.com/go-acme/lego)を用いてSSL/TSL証明書を取得する方法を説明します。ここではDNS認証でSSL/TSL証明書を取得する方法を説明します。 ## LegoとLet’s Encrypt `Let’s Encrypt`はSSL/TSL証明書を発行してくれるサービスです。 @@ -66,7 +66,7 @@ sequenceDiagram ### ここまでのまとめ -Legoはコマンドラインで`Let’s Encrypt`を用いてSSL/TSL証明書を発行するツールです。DNS認証にも対応しており、各種マネージドのDNSサービスを利用することで、自動的にTXTレコードを変更して、SSL/TSL証明書を取得することができます。 +[Lego](https://github.com/go-acme/lego)はコマンドラインで`Let’s Encrypt`を用いてSSL/TSL証明書を発行するツールです。DNS認証にも対応しており、各種マネージドのDNSサービスを利用することで、自動的にTXTレコードを変更して、SSL/TSL証明書を取得することができます。
sequenceDiagram @@ -130,7 +130,7 @@ drwxr-xr-x 14 kazu634 kazu634 4.0K Mar 31 04:34 .. ``` ## 使い方 -ここでは`lego`の使い方を説明します。 +ここでは[Lego](https://github.com/go-acme/lego)の使い方を説明します。 ### 下準備 各種環境変数を指定して利用します。 From a0b15c86a2fdb1b0e1c98e42420062035c3b18b3 Mon Sep 17 00:00:00 2001 From: kazu634 Date: Tue, 16 Apr 2019 16:50:08 +0700 Subject: [PATCH 02/11] Add link to "Let's Encrypt". --- content/labs/infra/2019-04-14_how_to_use_Lego.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/labs/infra/2019-04-14_how_to_use_Lego.md b/content/labs/infra/2019-04-14_how_to_use_Lego.md index 7ba1fe7..60001e2 100644 --- a/content/labs/infra/2019-04-14_how_to_use_Lego.md +++ b/content/labs/infra/2019-04-14_how_to_use_Lego.md @@ -9,7 +9,7 @@ image="https://live.staticflickr.com/2554/4156026735_6b97110206.jpg" [Lego](https://github.com/go-acme/lego)を用いてSSL/TSL証明書を取得する方法を説明します。ここではDNS認証でSSL/TSL証明書を取得する方法を説明します。 ## LegoとLet’s Encrypt -`Let’s Encrypt`はSSL/TSL証明書を発行してくれるサービスです。 +[Let's Encrypt](https://letsencrypt.org/)はSSL/TSL証明書を発行してくれるサービスです。 SSL/TSL証明書を発行するにあたり、そのドメインの所有者が本当に手続きをしているのか本人確認の手続きをします。 @@ -66,7 +66,7 @@ sequenceDiagram
### ここまでのまとめ -[Lego](https://github.com/go-acme/lego)はコマンドラインで`Let’s Encrypt`を用いてSSL/TSL証明書を発行するツールです。DNS認証にも対応しており、各種マネージドのDNSサービスを利用することで、自動的にTXTレコードを変更して、SSL/TSL証明書を取得することができます。 +[Lego](https://github.com/go-acme/lego)はコマンドラインで[Let's Encrypt](https://letsencrypt.org/)を用いてSSL/TSL証明書を発行するツールです。DNS認証にも対応しており、各種マネージドのDNSサービスを利用することで、自動的にTXTレコードを変更して、SSL/TSL証明書を取得することができます。
sequenceDiagram From 2aa76f940a50b69fea1945323ec3a19314f9a217 Mon Sep 17 00:00:00 2001 From: kazu634 Date: Tue, 16 Apr 2019 16:54:04 +0700 Subject: [PATCH 03/11] Add link to "Route 53" --- content/labs/infra/2019-04-14_how_to_use_Lego.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/labs/infra/2019-04-14_how_to_use_Lego.md b/content/labs/infra/2019-04-14_how_to_use_Lego.md index 60001e2..7de7159 100644 --- a/content/labs/infra/2019-04-14_how_to_use_Lego.md +++ b/content/labs/infra/2019-04-14_how_to_use_Lego.md @@ -87,7 +87,7 @@ sequenceDiagram Lego ->> User: SSL/TSL Certificate
-この記事ではAWSのマネージドDNSサービス`route53`を利用して、SSL/TSL証明書を取得してみます。 +この記事ではAWSのマネージドDNSサービス・[Amazon Route 53](https://aws.amazon.com/route53/)を利用して、SSL/TSL証明書を取得してみます。 ## Legoのインストール方法 githubからダウンロードします。 @@ -254,7 +254,7 @@ drwxr-xr-x 4 kazu634 kazu634 4.0K Mar 31 04:59 .. 後で書く ### ワイルドカード証明書が必要な場合 -`route53`側で以下のようにレコードを作成する: +[Amazon Route 53](https://aws.amazon.com/route53/)側で以下のようにレコードを作成する: Untitled From ffb7d05e71b67cd7a8c35ab27d4c84870df4a9bd Mon Sep 17 00:00:00 2001 From: kazu634 Date: Tue, 16 Apr 2019 16:56:53 +0700 Subject: [PATCH 04/11] Modify the terminal output --- .../labs/infra/2019-04-14_how_to_use_Lego.md | 52 +++++++------------ 1 file changed, 18 insertions(+), 34 deletions(-) diff --git a/content/labs/infra/2019-04-14_how_to_use_Lego.md b/content/labs/infra/2019-04-14_how_to_use_Lego.md index 7de7159..016df3c 100644 --- a/content/labs/infra/2019-04-14_how_to_use_Lego.md +++ b/content/labs/infra/2019-04-14_how_to_use_Lego.md @@ -186,41 +186,25 @@ Additional Configuration: ### 証明書の取得 ``` -export AWS_ACCESS_KEY_ID="xxxx" -export AWS_SECRET_ACCESS_KEY="yyyy" -export AWS_HOSTED_ZONE_ID="zzzz" -export AWS_REGION="ap-northeast-1" +kazu634@ip-10-0-1-234% export AWS_ACCESS_KEY_ID="xxxx" +kazu634@ip-10-0-1-234% export AWS_SECRET_ACCESS_KEY="yyyy" +kazu634@ip-10-0-1-234% export AWS_HOSTED_ZONE_ID="zzzz" +kazu634@ip-10-0-1-234% export AWS_REGION="ap-northeast-1" -kazu634@ip-10-0-1-234% ./lego --dns route53 --domains -lego.kazu634.com --email simoom634@yahoo.co.jp run -2019/03/31 05:02:07 [INFO] [lego.kazu634.com] acme: Ob -taining bundled SAN certificate -2019/03/31 05:02:08 [INFO] [lego.kazu634.com] AuthURL: - https://acme-v02.api.letsencrypt.org/acme/authz/kT24l -TOu3gbmepIH2vWudVjaxSTi8Q2Lu1y_BGlxD1E -2019/03/31 05:02:08 [INFO] [lego.kazu634.com] acme: Co -uld not find solver for: tls-alpn-01 -2019/03/31 05:02:08 [INFO] [lego.kazu634.com] acme: Co -uld not find solver for: http-01 -2019/03/31 05:02:08 [INFO] [lego.kazu634.com] acme: us -e dns-01 solver -2019/03/31 05:02:08 [INFO] [lego.kazu634.com] acme: Pr -eparing to solve DNS-01 -2019/03/31 05:02:09 [INFO] Wait for route53 [timeout: -2m0s, interval: 4s] -2019/03/31 05:02:42 [INFO] [lego.kazu634.com] acme: Tr -ying to solve DNS-01 -2019/03/31 05:02:42 [INFO] [lego.kazu634.com] acme: Ch -ecking DNS record propagation using [localhost:53 127. -0.0.1:53] -2019/03/31 05:02:42 [INFO] Wait for propagation [timeo -ut: 2m0s, interval: 4s] -2019/03/31 05:02:47 [INFO] [lego.kazu634.com] The serv -er validated our request -2019/03/31 05:02:47 [INFO] [lego.kazu634.com] acme: Cl -eaning DNS-01 challenge -2019/03/31 05:02:47 [INFO] Wait for route53 [timeout: -2m0s, interval: 4s] +kazu634@ip-10-0-1-234% ./lego --dns route53 --domains lego.kazu634.com --email simoom634@yahoo.co.jp run +2019/03/31 05:02:07 [INFO] [lego.kazu634.com] acme: Obtaining bundled SAN certificate +2019/03/31 05:02:08 [INFO] [lego.kazu634.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz/kT24lTOu3gbmepIH2vWudVjaxSTi8Q2Lu1y_BGlxD1E +2019/03/31 05:02:08 [INFO] [lego.kazu634.com] acme: Could not find solver for: tls-alpn-01 +2019/03/31 05:02:08 [INFO] [lego.kazu634.com] acme: Could not find solver for: http-01 +2019/03/31 05:02:08 [INFO] [lego.kazu634.com] acme: use dns-01 solver +2019/03/31 05:02:08 [INFO] [lego.kazu634.com] acme: Preparing to solve DNS-01 +2019/03/31 05:02:09 [INFO] Wait for route53 [timeout:2m0s, interval: 4s] +2019/03/31 05:02:42 [INFO] [lego.kazu634.com] acme: Trying to solve DNS-01 +2019/03/31 05:02:42 [INFO] [lego.kazu634.com] acme: Checking DNS record propagation using [localhost:53 127.0.0.1:53] +2019/03/31 05:02:42 [INFO] Wait for propagation [timeout: 2m0s, interval: 4s] +2019/03/31 05:02:47 [INFO] [lego.kazu634.com] The server validated our request +2019/03/31 05:02:47 [INFO] [lego.kazu634.com] acme: Cleaning DNS-01 challenge +2019/03/31 05:02:47 [INFO] Wait for route53 [timeout:2m0s, interval: 4s] 2019/03/31 05:03:25 [INFO] [lego.kazu634.com] acme: Validations succeeded; requesting certificates 2019/03/31 05:03:26 [INFO] [lego.kazu634.com] Server responded with a certificate. ``` From 93fbd4785b3a95caf967674443a06aac59368cd2 Mon Sep 17 00:00:00 2001 From: kazu634 Date: Tue, 16 Apr 2019 17:03:27 +0700 Subject: [PATCH 05/11] Add some explanation to the wrap-up --- content/labs/infra/2019-04-14_how_to_use_Lego.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/labs/infra/2019-04-14_how_to_use_Lego.md b/content/labs/infra/2019-04-14_how_to_use_Lego.md index 016df3c..65becc9 100644 --- a/content/labs/infra/2019-04-14_how_to_use_Lego.md +++ b/content/labs/infra/2019-04-14_how_to_use_Lego.md @@ -68,6 +68,8 @@ sequenceDiagram ### ここまでのまとめ [Lego](https://github.com/go-acme/lego)はコマンドラインで[Let's Encrypt](https://letsencrypt.org/)を用いてSSL/TSL証明書を発行するツールです。DNS認証にも対応しており、各種マネージドのDNSサービスを利用することで、自動的にTXTレコードを変更して、SSL/TSL証明書を取得することができます。 +おおまかな処理の流れをまとめると、以下のようになります。[Lego](https://github.com/go-acme/lego)を利用することで、煩雑な手続きをまとめて実行してくれていることがわかると思います: +
sequenceDiagram participant User From 934dab3a0aefba535ab816f2eed79175d3088766 Mon Sep 17 00:00:00 2001 From: kazu634 Date: Tue, 16 Apr 2019 17:04:52 +0700 Subject: [PATCH 06/11] Change the explanation position --- content/labs/infra/2019-04-14_how_to_use_Lego.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/labs/infra/2019-04-14_how_to_use_Lego.md b/content/labs/infra/2019-04-14_how_to_use_Lego.md index 65becc9..ba47441 100644 --- a/content/labs/infra/2019-04-14_how_to_use_Lego.md +++ b/content/labs/infra/2019-04-14_how_to_use_Lego.md @@ -135,13 +135,6 @@ drwxr-xr-x 14 kazu634 kazu634 4.0K Mar 31 04:34 .. ここでは[Lego](https://github.com/go-acme/lego)の使い方を説明します。 ### 下準備 -各種環境変数を指定して利用します。 - -- `AWS_ACCESS_KEY_ID` -- `AWS_SECRET_ACCESS_KEY` -- `AWS_HOSTED_ZONE_ID` -- `AWS_REGION` - コマンドラインのヘルプはこんな感じになります: ``` @@ -177,6 +170,13 @@ Additional Configuration: - "AWS_TTL": The TTL of the TXT record used for the DNS challenge ``` +ここから各種環境変数を指定して利用する必要があるとわかります: + +- `AWS_ACCESS_KEY_ID` +- `AWS_SECRET_ACCESS_KEY` +- `AWS_HOSTED_ZONE_ID` +- `AWS_REGION` + ### AWS_ACCESS_KYE_IDとAWS_SECRET_ACCESS_KEYの調べ方 後で書く From 24803ebe5d64868a689f9cb4146ecc5ce8b4f479 Mon Sep 17 00:00:00 2001 From: kazu634 Date: Tue, 16 Apr 2019 17:21:21 +0700 Subject: [PATCH 07/11] Add link to "Route 53" --- content/labs/infra/2019-04-14_how_to_use_Lego.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/labs/infra/2019-04-14_how_to_use_Lego.md b/content/labs/infra/2019-04-14_how_to_use_Lego.md index ba47441..900a8ac 100644 --- a/content/labs/infra/2019-04-14_how_to_use_Lego.md +++ b/content/labs/infra/2019-04-14_how_to_use_Lego.md @@ -151,7 +151,7 @@ All DNS codes: More information: https://go-acme.github.io/lego/dns ``` -`route53`特有の注意事項はこちら: +[Amazon Route 53](https://aws.amazon.com/route53/)特有の注意事項はこちら: ``` kazu634@ip-10-0-1-234% ./lego dnshelp -c route53 @@ -181,7 +181,7 @@ Additional Configuration: 後で書く ### AWS_HOSTED_ZONE_IDの調べ方 -`route53`で`Hosted Zone ID`の部分を調べます: +[Amazon Route 53](https://aws.amazon.com/route53/)で`Hosted Zone ID`の部分を調べます: Untitled From e669b8f8def3c86530e8798260a36ad5bf4dec13 Mon Sep 17 00:00:00 2001 From: kazu634 Date: Tue, 16 Apr 2019 17:26:38 +0700 Subject: [PATCH 08/11] Add work flow of using Route 53 --- .../labs/infra/2019-04-14_how_to_use_Lego.md | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/content/labs/infra/2019-04-14_how_to_use_Lego.md b/content/labs/infra/2019-04-14_how_to_use_Lego.md index 900a8ac..14398b4 100644 --- a/content/labs/infra/2019-04-14_how_to_use_Lego.md +++ b/content/labs/infra/2019-04-14_how_to_use_Lego.md @@ -177,6 +177,31 @@ Additional Configuration: - `AWS_HOSTED_ZONE_ID` - `AWS_REGION` +つまりこのようなフローになります: + +
+sequenceDiagram + participant User + participant Lego + participant Let’s Encrypt + participant Route53 + + note over User,Route53: Preparation + User ->> User: Specify AWS Environment Variables + + note over User,Route53: Actual Operation + User ->> Lego: Request + Lego ->> Let’s Encrypt: Request + Let’s Encrypt ->> Lego: Return the key + Lego ->> Route53: Specify the key to the TXT record + note over Lego,Route53: Wait for TXT record to propagate + Lego ->> Let’s Encrypt: Request to continue + Let’s Encrypt ->> Route53: Check the TXT record + Route53 ->> Let’s Encrypt: Return the TXT record + Let’s Encrypt ->> Lego: SSL/TSL Certificate + Lego ->> User: SSL/TSL Certificate +
+ ### AWS_ACCESS_KYE_IDとAWS_SECRET_ACCESS_KEYの調べ方 後で書く From 9a96adf136a1ba21c46b8f7c4862caf2e2e5fa59 Mon Sep 17 00:00:00 2001 From: kazu634 Date: Tue, 16 Apr 2019 17:29:56 +0700 Subject: [PATCH 09/11] Add explanations --- content/labs/infra/2019-04-14_how_to_use_Lego.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/content/labs/infra/2019-04-14_how_to_use_Lego.md b/content/labs/infra/2019-04-14_how_to_use_Lego.md index 14398b4..c79c048 100644 --- a/content/labs/infra/2019-04-14_how_to_use_Lego.md +++ b/content/labs/infra/2019-04-14_how_to_use_Lego.md @@ -95,6 +95,8 @@ sequenceDiagram githubからダウンロードします。 ### ダウンロード +ファイルのダウンロードは何でも構いませんが、たとえば以下のようになるかと思います: + ``` kazu634@ip-10-0-1-234% wget https://github.com/go-acme/lego/releases/download/v2.4.0/lego_v2.4.0_linux_amd64.t ar.gz @@ -116,6 +118,8 @@ lego_v2.4.0_linux_amd64.tar 100%[=========================================>] 8 ``` ### 解凍 +解凍方法は以下のようになるかと思います: + ``` kazu634@ip-10-0-1-234% tar xvzf lego_v2.4.0_linux_amd64.tar.gz [~/works] CHANGELOG.md @@ -211,6 +215,7 @@ sequenceDiagram Untitled ### 証明書の取得 +それでは証明書を取得してみます。以下のように実行することになると思います: ``` kazu634@ip-10-0-1-234% export AWS_ACCESS_KEY_ID="xxxx" From 2d41a15bc6e4206f9c8ae2c12908e5cc83c1c7ff Mon Sep 17 00:00:00 2001 From: kazu634 Date: Tue, 16 Apr 2019 17:43:17 +0700 Subject: [PATCH 10/11] Add more detailed work flow --- content/labs/infra/2019-04-14_how_to_use_Lego.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/content/labs/infra/2019-04-14_how_to_use_Lego.md b/content/labs/infra/2019-04-14_how_to_use_Lego.md index c79c048..6342d4f 100644 --- a/content/labs/infra/2019-04-14_how_to_use_Lego.md +++ b/content/labs/infra/2019-04-14_how_to_use_Lego.md @@ -15,7 +15,7 @@ SSL/TSL証明書を発行するにあたり、そのドメインの所有者が 手続き方法には以下の方法があります。 -### HTTP認証 +### HTTP-01認証 ドメインの所有者であれば、そのドメインにアクセスした際に表示されるコンテンツを自由にできるはずですので、それを利用した認証方式です。
@@ -33,14 +33,18 @@ sequenceDiagram Note over User, DNS: 3. Request SSL/TSL Certificate User ->> Let’s Encrypt: Request + Let’s Encrypt ->> User: File name + Let’s Encrypt ->> User: Token + User ->> Web Server: Put the file with the token + User ->> Let’s Encrypt: Request to continue Let’s Encrypt ->> DNS: Name Resolution Request DNS ->> Let’s Encrypt: Name Resolution Response Let’s Encrypt ->> Web Server: HTTP Request (Port 80) via Internet - Web Server ->> Let’s Encrypt: HTTP Response (200) + Web Server ->> Let’s Encrypt: HTTP Response (200) with the valid token Let’s Encrypt ->> User: SSL/TSL Certificate
-### DNS認証 +### DNS-01認証 ドメインの所有者であれば、そのドメインのTXTレコードを自由に設定できるはずですので、それを利用した認証方式です。
@@ -80,7 +84,8 @@ sequenceDiagram User ->> Lego: Request Lego ->> Let’s Encrypt: Request Let’s Encrypt ->> Lego: Return the key - Lego ->> DNS: Specify the key to the TXT record + Lego ->> DNS: Create the sub domain + Lego ->> DNS: Specify the key to the TXT record of the sub domain note over Lego,DNS: Wait for TXT record to propagate Lego ->> Let’s Encrypt: Request to continue Let’s Encrypt ->> DNS: Check the TXT record @@ -197,7 +202,8 @@ sequenceDiagram User ->> Lego: Request Lego ->> Let’s Encrypt: Request Let’s Encrypt ->> Lego: Return the key - Lego ->> Route53: Specify the key to the TXT record + Lego ->> Route53: Create the sub domain + Lego ->> Route53: Specify the key to the TXT record of the sub domain note over Lego,Route53: Wait for TXT record to propagate Lego ->> Let’s Encrypt: Request to continue Let’s Encrypt ->> Route53: Check the TXT record From fd5bf1053af012b79fd0233a577624defb08cd08 Mon Sep 17 00:00:00 2001 From: kazu634 Date: Tue, 16 Apr 2019 17:48:15 +0700 Subject: [PATCH 11/11] Add more detailed information --- content/labs/infra/2019-04-14_how_to_use_Lego.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/content/labs/infra/2019-04-14_how_to_use_Lego.md b/content/labs/infra/2019-04-14_how_to_use_Lego.md index 6342d4f..b6b6daf 100644 --- a/content/labs/infra/2019-04-14_how_to_use_Lego.md +++ b/content/labs/infra/2019-04-14_how_to_use_Lego.md @@ -16,7 +16,7 @@ SSL/TSL証明書を発行するにあたり、そのドメインの所有者が 手続き方法には以下の方法があります。 ### HTTP-01認証 -ドメインの所有者であれば、そのドメインにアクセスした際に表示されるコンテンツを自由にできるはずですので、それを利用した認証方式です。 +ドメインの所有者であれば、そのドメインにアクセスした際に表示されるコンテンツを自由にできるはずですので、それを利用した認証方式です。具体的には[Let's Encrypt](https://letsencrypt.org/)から送られてきたトークンを記入したファイルをウェブサーバで配信できる状態にして、[Let's Encrypt](https://letsencrypt.org/)にそのファイル・トークンを確認してもらうことで、ドメインを所有していることを証明します。
sequenceDiagram @@ -45,7 +45,12 @@ sequenceDiagram
### DNS-01認証 -ドメインの所有者であれば、そのドメインのTXTレコードを自由に設定できるはずですので、それを利用した認証方式です。 +ドメインの所有者であれば、 + +1. そのドメインのサブドメインを作成できる +2. 作成したサブドメインのTXTレコードを自由に設定できる + +はずですので、それを利用した認証方式です。[Let's Encrypt](https://letsencrypt.org/)から送られてきたトークンをTXTレコードに指定し、それを[Let's Encrypt](https://letsencrypt.org/)に確認してもらうことで、ドメインを所有していることを証明します。
sequenceDiagram