ひょんな事から無料でドメインを取得。このドメインを軸に「mkcertではなくLet's Encryptでもワイルドカード証明書が発行できないか」と思って試してみました。
やりたいこと
- せっかく手に入れたドメインなので、自宅でそれを用いる。
- mkcertを用いている自宅内サーバのgrowiをLet's Encryptに差し替える。
前提
以下は準備済みです。
- AWS Lightsailで運用しているUbuntu 20系サーバがある
- ドメインを取得している
- certbotを運用している
手順
作業対象が手順によって異なります。
手順 -1- ドメイン設定
- lightsailのDNS設定で取得したドメインを有効にします。
- お名前.comのDNSサーバの向き先をlightsailのものに設定します。
- lightsailのAレコードに「自分が運用しているローカルサーバのIPと適当な名前」を設定して紐付けます。
手順 -2- ワイルドカード証明書発行コマンド入力 (lightsail側サーバ)
sudo certbot certonly --manual \
--preferred-challenges dns-01 \
--server https://acme-v02.api.letsencrypt.org/directory \
-m 自分のメールアドレス \
-d *.ドメイン名
入力後、以下のようにTXTレコードを登録するように求められます。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.ドメイン名 with the following value:
DNSに登録するレコードの値
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
ここではまだEnterは押しません。
手順 -3- TXTレコード追加 (AWS Lightsail管理画面)
lightsailのDNS設定で
- TXTのレコード
- サブドメイン:_acme-challenge
- 「以下で応答します」にDNSに登録するレコードの値
をそれぞれ設定して反映させます。
反映後、別のターミナルで以下を実行します。
nslookup -type=TXT _acme-challenge.登録したドメイン名 8.8.8.8
結果が返ってきたら次のステップに進みます。
手順 -4- ワイルドカード証明書発行 (lightsail側サーバ)
手順-2-で押していなかったEnterを押します。
以下のようにパスとファイルが明示されているので、そのパスの内容を控えておきます。(外部に公開しないよう注意します)
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/ドメイン名/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/ドメイン名/privkey.pem
Your certificate will expire on 2023-01-09. To obtain a new or
tweaked version of this certificate in the future, simply run
certbot again. To non-interactively renew *all* of your
certificates, run "certbot renew"
hostsファイル書き換え(growiサーバ側)
/etc/hostsファイルを
IPアドレス lightsailで設定したフルドメイン サブドメイン
で修正します。
証明書差し替え
こちらを元に、証明書を差し替えます。
動作確認
証明書差し替え → nginx再起動後、「AWS Lightsailで設定したドメイン名」でアクセスします。
DNS情報がインターネット上に公開されているので
- 同じNWにつながっていれば、DNSを明示していなくともアクセスできる
- mkcertのように端末に証明書をインポートせずに済む
のがLet's Encrypのいいところです。