NAT配下の環境でSSL証明書を使う

EV SSLクソ食らえ!の精神で,のLet’s Encrypt をいろんな環境で活用させてもらっていますが,NAT配下のテスト環境にもワイルドカード証明書を突っ込んでいます.
もちろん自動更新設定です.
certbot で Let’s Encrypt の認証をするときに,Route53を利用する方法です.

certbotのプラグインで,certbot-dns-route53プラグインがありますので,そちらを利用します.

しがらみの一部がCent6系で辛いですが,そちら前提で一度メモ書きを.
サービス起動コマンドとかだけ直せば基本的にCent7でも動きますね.
考え方は同じなので,certbot-autoではなくcertbotがいいと思いますけど.

まずcertbot-autoの取得

$ wget https://dl.eff.org/certbot-auto

どこでもいいですが,今回は, /usr/local/bin にでも置きましょう.

# mv ./certbot-auto /usr/local/bin/

適当にroot所有にしてから権限設定

# chown root /usr/local/bin/certbot-auto
# chmod a+x certbot-auto /usr/local/bin/certbot-auto

まずは,セットアップ目的で実行します.
とりあえず環境を完成させてもらって,最後の証明書取得のあたりの適当なところで抜けます.

# /usr/local/bin/certbot-auto

当該環境のvenvがこちらにセットされますので

/opt/eff.org/certbot/venv/bin/pip

この環境に,certbot-dns-route53 をインストールします.

# /opt/eff.org/certbot/venv/bin/pip install certbot-dns-route53

これでとりあえず無事にプラグイン設定が終わりました.

次に,AWS側に専用ユーザを作成します.
DNS書き換えできればいいので,権限を最低限に絞ります.

AWSでIAMメニューから,グループまたはユーザに適宜権限を付与します.
私は面倒なので割とVisualEditorで作ってしまいます.
ここも自動化してもいいかもしれないですね.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "route53:GetChange",
                "route53:ListHostedZones"
            ],
        "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "route53:ChangeResourceRecordSets",
            "Resource": "arn:aws:route53:::hostedzone/<ホストゾーンID>"
        }
    ]
}

ちなみに,ホストゾーンIDはここです.

Route53の認証情報は,root実行の前提だと, /root/.aws/config あたりに入れる必要があります.
生成したキー情報を設定します.

[default]
aws_access_key_id=<アクセスキー>
aws_secret_access_key=<シークレットアクセスキー>

キー生成後にさくっと実行します.
面倒なので,ワイルドカード証明書の前提です.

# ./certbot-auto certonly --dns-route53 -d *.<対象ドメイン> -d <対象ドメイン> --server https://acme-v02.api.letsencrypt.org/directory

あとは,通常通り,出力された鍵情報を必要なサーバから読めるようにしましょう.

ついでに,更新はこちらですね.
月1回くらいバッチで自動実行しておけばバチは当たらないです.
renew-hookが地味に便利ですね.
renewが成功したときだけ,自動実行してくれますよ.

# /usr/local/bin/certbot-auto renew --renew-hook "/etc/init.d/httpd restart"

Similar Posts:

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください