意識他界大熊猫の世界

意識他界大熊猫による意識他界ブログ

certbotを使って Let's Encrypt ワイルドカード証明書をスマートに(?)発行する(Route 53版)

Let's Encryptワイルドカード証明書を取得する(certbotをちょっとアタマ使ってスマートに使おう(?)編)

Let's Encrypt の証明書管理ツール certbotpython で書かれているので、特に同じ python スクリプトである AWS CLI と相性があまりよくない(それぞれのバージョンによってはモジュールのバージョン依存に不整合が発生する・・・)。しかしシステム標準の pythonだとあんまゴニョゴニョしすぎるといろんな所に影響でちゃう・・・だったら pyenv を利用してその辺すっきりとスマートに使おう!というヤツ

以下 *.example.jp の証明書を取得する場合について書いていく (example.jp の Name Server は AWS Route53 利用)

① root ユーザで pyenv 導入

# curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
# vi /root/.bashrc
  → ファイルの最後に下記3行追加
export PATH="/root/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

② 一度 root でログインし直してから pyenv を利用して python 3.8.3 (2020/07/02現在の 3.8系最新版)をインストール

# pyenv install 3.8.3

インストールに失敗する場合はググりましょう() まあ大抵 libffi がインストールされていないのが原因だったりするんですが・・・

③ pyenv 環境下で利用するデフォルトバージョンを 3.8.3 にする

# pyenv global 3.8.3

④ pip を最新化(しなくてもいいかも)した後、certbot 本体及び Route53 向け DNS 認証プラグインをインストール

# pip install pip -U
# pip install certbot certbot-dns-route53

AWS にて ドメイン example.jp について下記の通り確認/設定し、Access Key/Secret Access Key を取得する

 ・Web GUI等から Route 53 の example.jp ホストゾーンについて Hosted Zone ID を確認する

 ・下記JSONドキュメントで示される権限を与えたユーザを作成し、Access Key/Secret Access Key を発行する

{
    "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/<Hosted Zone ID>"
        }
    ]
}

 ・Access Key/Secret Access Key を下記のいずれかに設定する(複数設定した場合は上から順に参照される)

   環境変数 AWS_ACCESS_KEY_ID 及び AWS_SECRET_ACCESS_KEY_ID

   ファイル /root/.aws/config (credentials)

   環境変数 AWS_CONFIG_FILE に設定されているファイル

   ※ AWS CLI を使っていないのなら /root/.aws/config に書いちゃった方が楽(たぶん)

   ※ ファイルに書く場合は下記のフォーマットにすること

[default]
aws_access_key_id = <Access Key>
aws_secret_access_key = <Secret Access Key>

⑥ certbot コマンドを実行して証明書発行処理を行う

# certbot certonly --dns-route53 -d *.example.jp

※以前の古い certbot では --server オプションを追加して API エンドポイントの指定をする必要がありました(ワイルドカード証明書の発行が ACME v2 での対応だったため)が、現在の最新版では不要です

環境変数を設定して実行したい場合は env を併用するとよいでしょう・・・

まあこんな感じで

届出電気通信事業者になってみた(追記)

Mastodonインスタンスを運営しているんですが、思い立って「届出電気通信事業者」になってみました(しろめ 素人でも結構簡単にできるので、おひとりさまインスタンスではないインスタンス鯖缶の方は届け出ておくといいかもしれません・・・ なお、今回は「関東総合通信局」管轄エリア(個人なら茨城・栃木・群馬・埼玉・千葉・東京・神奈川・山梨の各都県在住)を対象にしています。他の地域にお住まいの方はそれぞれ管轄の総合通信局サイトをご確認くださいね!

必要書類

ここからダウンロードできる様式3本(様式第8,第4,第3)
・住民票写しの原本(役所でもらって来たのをそのまま使います コピーはダメよ)
・通知書を送ってもらうための返信用封筒(切手貼付/送付先記入のこと)

書類を書こう

1. まずは届出書でもある様式第8から・・・
・ほぼ記入例で説明されているとおりですが、まずは右上の「申請日/郵便番号/住所/名前/電話番号/メールアドレス」を埋めてハンコを押します。なお住所は住民票に記載されているものと同じものを記入してください。

・「1 業務区域」 の (1) 提供区域 に「全国」と書きます

・末尾の「3事業開始予定年月日」に届出日以降の日付を記入します

はい簡単ですね!次行きます

B. 様式第4

Mastodonインスタンスは「28 インターネット関連サービス(IP電話を除く)」に該当しますので、下記の通り記入します

以上です(しろめ

C. 様式第3
・一見面倒そうなネットワーク構成図ですが、これ実は「記入例ほぼまるパクリ」で問題ありません((
・これが記入例

・こっちが私が提出して受理されたヤツ

・まあこんな感じで簡単に説明したのでよいようです。

書類を送ろう

・あとはここまでに作成した申請書類3本と返信用封筒・住民票を封筒に入れ、管轄の総合通信局に送付するだけです(送付先は総合通信局のサイトにあります)。不備がなければ数日後に通知書が届きます。


こんな感じで余裕でした!みなさまのお役に立てれば幸いです。