0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Let's Encryptのdns-route53プラグインを複数のAWSアカウントで利用する

Posted at

はじめに

1つのリバースプロキシ上で複数のドメインを管理するというケースはよくあると思います。また、それぞれのドメインをLet's Encryptを利用してHTTPS対応することも当たり前のようにあることかと思います。

Let's Encryptには、Route53によるDNSレコード認証と証明書発行を自動的に行うdns-route53プラグインというものが存在します。このプラグインを利用することで、証明書の発行と更新が自動化され、証明書管理にかかる手間が軽減されます。

複数のAWSアカウントへの対応

dns-route53プラグインは、デフォルトでは~/.aws/ディレクトリ以下で管理されるconfigおよびcredentialsのdefaultプロファイルを参照して動作します。企業においてはAWSアカウントが部門やプロジェクトごとに存在し、これらを複数のプロファイルを管理しているケースも当たり前のようにあるかと思います。

また、部門やプロジェクトごとにドメインあるいはサブドメインを各AWSアカウント配下のRoute 53で管理しているケースもあるかと思いますし、1つのリバースプロキシ内で異なる部門やプロジェクトのドメインをホストしているケースもあると思います。

しかし、通常のcertbotコマンドの実行方法は、デフォルトのプロファイルとして設定されたAWSアカウントを対象していますので、そのままでは他のAWSアカウントで管理されているドメイン向けの証明書発行・更新を行うことが出来ません。

他のAWSアカウント(プロファイル)で管理されているドメインに対する証明書発行・更新は、次の手順をもとに進めることで対応することが出来ます。

手順

1. プロファイルを追加する

~/.aws/config ~/.aws/credentials へそれぞれプロファイルを追加します。

ここでは、testdrive というプロファイルを新たに追加しています。

~/.aws/config
[default]
region = ap-northeast-1
output = json

[testdrive]
region = ap-northeast-1
output = json
~/.aws/credentials
[default]
aws_access_key_id = AKIAXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

[testdrive]
aws_access_key_id = AKIAXXXXXXXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

2. certbotコマンドを実行する

AWS_PROFILE変数をセットした状態で、certbotコマンドを実行します。

AWS_PROFILE=testdrive \
certbot certonly \
--dns-route53 \
-d '*.example.net' \
-d 'example.net' \
--email admin@example.net \
-n --agree-tos \
--key-type rsa \
--rsa-key-size 2048

2を実行すると証明書が発行されますので、発行された証明書をWebサーバあるいはリバースプロキシの対応するドメインに対して設定します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?