Legoの使い方メモ
Legoを用いてSSL/TSL証明書を取得する方法を説明します。ここではDNS認証でSSL/TSL証明書を取得する方法を説明します。
LegoとLet’s Encrypt
Let's EncryptはSSL/TSL証明書を発行してくれるサービスです。
SSL/TSL証明書を発行するにあたり、そのドメインの所有者が本当に手続きをしているのか本人確認の手続きをします。
手続き方法には以下の方法があります。
HTTP-01認証
ドメインの所有者であれば、そのドメインにアクセスした際に表示されるコンテンツを自由にできるはずですので、それを利用した認証方式です。具体的にはLet's Encryptから送られてきたトークンを記入したファイルをウェブサーバで配信できる状態にして、Let's Encryptにそのファイル・トークンを確認してもらうことで、ドメインを所有していることを証明します。
DNS-01認証
ドメインの所有者であれば、
- そのドメインのサブドメインを作成できる
- 作成したサブドメインのTXTレコードを自由に設定できる
はずですので、それを利用した認証方式です。Let's Encryptから送られてきたトークンをTXTレコードに指定し、それをLet's Encryptに確認してもらうことで、ドメインを所有していることを証明します。
ここまでのまとめ
LegoはコマンドラインでLet's Encryptを用いてSSL/TSL証明書を発行するツールです。DNS認証にも対応しており、各種マネージドのDNSサービスを利用することで、自動的にTXTレコードを変更して、SSL/TSL証明書を取得することができます。
おおまかな処理の流れをまとめると、以下のようになります。Legoを利用することで、煩雑な手続きをまとめて実行してくれていることがわかると思います:
この記事ではAWSのマネージドDNSサービス・Amazon Route 53を利用して、SSL/TSL証明書を取得してみます。
Legoのインストール方法
githubからダウンロードします。
ダウンロード
ファイルのダウンロードは何でも構いませんが、たとえば以下のようになるかと思います:
|
|
解凍
解凍方法は以下のようになるかと思います:
|
|
使い方
ここではLegoの使い方を説明します。
下準備
コマンドラインのヘルプはこんな感じになります:
|
|
Amazon Route 53特有の注意事項はこちら:
|
|
ここから各種環境変数を指定して利用する必要があるとわかります:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_HOSTED_ZONE_ID
AWS_REGION
つまりこのようなフローになります:
AWS_ACCESS_KYE_IDとAWS_SECRET_ACCESS_KEYの調べ方
後で書く
AWS_HOSTED_ZONE_IDの調べ方
Amazon Route 53でHosted Zone ID
の部分を調べます:
証明書の取得
それでは証明書を取得してみます。以下のように実行することになると思います:
|
|
nginxで証明書を指定する
以下のように証明書が取得されているはずです:
|
|
この場合、nginx
には以下のように指定します:
|
|
IISで利用する場合
LegoではうまくIISに登録できないことがわかったため、WindowsサーバのIISにLet’s Encryptで取得したワイルドカードSSL証明書をインポートするを参照してください。
ワイルドカード証明書が必要な場合
Amazon Route 53側で以下のようにレコードを作成する:
その後は通常通り、コマンドを実行します:
|
|
参考
- nginx-lego/nginx.conf at master · pavels/nginx-lego · GitHub
- Let's Encrypt で DNS-01を利用したSSL証明書の取得方法 - Qiita
- Free wildcard certs with Let's Encrypt & DNS auth ft. Route 53 | Varun Priolkar
- Issue Let's Encrypt certificate using AWS Route53
- How to Import & Export SSL Certificates in IIS 7 | DigiCert
- Importing & Exporting SSL Certificates In IIS 8 & IIS 8.5
- IIS 10 Exporting/Importing SSL Certificates | digicert.com
- WindowsサーバのIISにLet’s Encryptで取得したワイルドカードSSL証明書をインポートする