DNS認証(WEBサーバーなし)でLet’s EncryptのSSL証明書を発行
Let’s EncryptのDNS-01 challengeを利用したSSL証明書発行手順の紹介です。
Let’s Encryptのドメイン検証方法の1つにDNS-01 challenge(DNS認証)があります。
DNS-01 challengeを使用するとDNSのTXTレコード認証でSSL証明書発行する事ができます。
つまりWEBサーバーを準備しなくてもLet’s EncryptのSSL証明書が発行できます。
事前準備としてのパッケージインストールから証明書発行までの手順をまとめています。
pem形式からpfx形式への変換、キーコンテナ(Azure Key Vault)へのアップロード手順も紹介しています。
-
- パッケージインストール(Certbot、snapd)
- DNS-01 challengeでSSL証明書発行
- pem形式からpfx形式へ変換
- キーコンテナー(Azure Key Vault)へのアップロード
※OSはRocky Linux release 8.9 (Green Obsidian)を使用しています。
※DNSはAzure DNSを使用しています。
DNS-01 challengeでLet’s EncryptのSSL証明書を発行
証明書発行方法は大きく分けて3種類
Let’s Encryptの証明書発行時のドメイン検証方法は大きく分けて3種類あります。
-
- HTTP-01 challenge
- WEBサーバーを利用して証明書の発行を行う方法
- standaloneモードを使用すれば、Certbot内で起動するWEBサーバーを利用して発行が可能
- 外部から80番ポートへのアクセスが許可されている事が必要
- DNS-01 challenge
- DNSのTXTレコードを利用して証明書の発行を行う方法
- WEBサーバーがなくても証明書の発行が可能
- TLS-ALPN-01
- ACMEプロトコルのTLS拡張を利用して証明書の認証を行う方法
- WEBサーバーがHTTPSをサポートし指定されたTLS拡張が有効である事が必要
- HTTP-01 challenge
今回はDNS-01 challengeでのSSL証明書発行手順を確認します。
HTTP-01 challengeでの証明書発行手順についてはこちらに纏めています。
併せて見て頂けると有難いです。
パッケージインストール
証明書発行に必要なパッケージをインストールします。
公式サイトで推奨されているCertbot(ACMEクライアント)を使用します。
Let’s Encryptの証明書発行に必要なCertbotをインストールします。
Certbotのインストール時に利用するsnapd、snapdインストール時に必要なepel-releaseも併せてインストールします。
パッケージインストール | |
epelリポジトリ(epel-release)をインストールします。
|
|
snapdをインストールします。
|
|
snapを設定します。
|
|
snapを使用してcertbotをインストールします。
|
DNS-01 challengeでSSL証明書発行
DNS-01 challengeを使用してSSL証明書を発行します。
DNS-01 challengeを使用する場合は、certbot実行時に–preferred-challenges dnsと指定します。
certbot実行後に発行された値をTXTレコードに設定します。
※DNSにはAzure DNSを使用しています。
SSL証明書発行 | |
certbotでSSL証明書を発行します。 ※手順のサンプルドメインをwww.example.comとしています。
|
|
DNSでTXTレコードを設定します。 |
|
TXTレコード追加後にエンターをクリックして処理を再開します。
|
|
/etc/letsencrypt/live/ドメイン名/配下に4つのファイルが生成されています。
|
pem形式からpfx形式に変換
発行された証明書をpfx形式に変換して利用する事も出来ます。
opensslコマンドでpem形式からpfx形式に変換します。
pfx形式のSSL証明書はexample.pfxとしています。
-
- -export:PFX形式に変換
- -inkey:秘密鍵ファイルを指定
- -in:証明書ファイルを指定
- -out:出力するPFX形式のファイル名を指定
pfx形式に変換 | |
|
キーコンテナー(Key Vault)で証明書管理
キーコンテナー(Key Vault)で発行した証明書を管理できます。
キーコンテナー(Key Vault)で管理する事により、有効期限前に通知を受け取ったりAzureリソースから簡単に参照できます。
今回は変換したpfx形式のSSL証明書をアップロードします。
キーコンテナー(Key Vault)のリソース作成、証明書発行、有効期限前の通知などについてはこちらに纏めています。
最後に
Let’s EncryptのDNS-01 challenge(DNS認証)を利用したSSL証明書発行手順について確認してみました。
DNS-01 challenge(DNS認証)を利用すると、WEBサーバーなくともSSL証明書が発行できました。
DNSレコードを追加する必要がありますが、比較的に簡単に利用する事ができました。
引き続き色々試してみたいと思います。
Azure App Serviceのカスタムドメイン追加や、マネージド証明書発行手順についてはこちらで紹介しています。