DNS認証(Webサーバーなし)でLet’s EncryptのSSL証明書を発行
Let’s EncryptのDNS-01チャレンジを利用してSSL証明書を発行する手順です。
Let’s Encryptのドメイン検証方法の一つに、DNS-01チャレンジ(DNS認証)があります。
DNS-01チャレンジ(DNS認証)では、TXTレコードによる認証を利用してSSL証明書を発行できます。
Webサーバーを用意しなくても、Let’s EncryptのSSL証明書を取得することが可能です。
SSL証明書発行に必要なパッケージのインストールから証明書発行までの手順を紹介しています。
pem形式からpfx形式への変換方法や、キーコンテナ(Azure Key Vault)へのアップロード手順についても紹介しています。
-
- SSL証明書発行に必要なパッケージ(Certbot、snapd)のインストール手順
- DNS-01チャレンジを利用したSSL証明書発行手順
- pem形式からpfx形式への変換手順
- キーコンテナ(Azure Key Vault)へのアップロード手順
※確認には、Rocky Linux release 8.9 (Green Obsidian)を使用しています。
※Azure DNSを使用して手順確認しています。
DNS-01チャレンジでLet’s EncryptのSSL証明書を発行
証明書発行方法は大きく分けて3種類
Let’s Encryptの証明書発行時のドメイン検証方法には、おおきくわけて3種類があります。
-
- HTTP-01 チャレンジ
- Webサーバーを利用して証明書を発行する方法
- standaloneモードを使用すれば、Certbot内で起動するWebサーバーを利用して証明書発行が可能
- 外部から80番ポートへのアクセスが許可されている必要がある
- DNS-01チャレンジ
- DNSのTXTレコードを利用して証明書を発行する方法
- Webサーバーがなくても証明書の発行が可能
- TLS-ALPN-01
- ACMEプロトコルのTLS拡張を利用して証明書の認証を行う方法
- WebサーバーがHTTPSをサポートし、指定されたTLS拡張が有効である必要がある
- HTTP-01 チャレンジ
今回はDNS-01チャレンジを利用したSSL証明書発行手順を紹介します。
HTTP-01 チャレンジでの証明書発行手順については、こちらで紹介しています。
証明書発行に必要なパッケージインストール
証明書発行に必要なパッケージをインストールします。
公式サイトで推奨されているCertbot(ACMEクライアント)を使用します。
Let’s Encryptの証明書発行に必要なCertbotをインストールします。
Certbotのインストール時に必要なsnapd、およびsnapdインストール時に必要なepel-releaseも併せてインストールします。
パッケージをインストール | |
epelリポジトリ(epel-release)をインストールします。
|
|
snapdをインストールします。
|
|
snapを設定します。
|
|
snapを使用してcertbotをインストールします。
|
DNS-01チャレンジでSSL証明書発行
DNS-01チャレンジを使用してSSL証明書を発行します。
DNS-01チャレンジを利用する場合は、certbot実行時に–preferred-challenges dnsと指定します。
certbot実行後に表示される値をTXTレコードに設定します。
※DNSにはAzure DNSを使用しています。
DNS-01チャレンジで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形式ファイル名を指定
pem形式からpfx形式に変換 | |
|
—広告—
キーコンテナー(Azure Key Vault)で証明書管理
キーコンテナー(Key Vault)で発行した証明書を管理できます。
キーコンテナー(Key Vault)で管理することで、有効期限前に通知を受け取ったり、Azureリソースから簡単に参照できます。
今回は、変換したpfx形式のSSL証明書をアップロードします。
キーコンテナー(Key Vault)のリソース作成、証明書発行、有効期限前の通知などの手順ついては、こちらで紹介しています。
最後に
今回は、Let’s EncryptのDNS-01チャレンジ(DNS認証)を利用したSSL証明書発行手順について確認しました。
DNS-01チャレンジ(DNS認証)を利用することで、WebサーバーがなくてもSSL証明書を発行できます。
DNSレコードを追加する必要がありますが、比較的簡単に利用できました。
引き続き、いろいろ試してみたいと思います。
Azure App Serviceのカスタムドメイン追加や、マネージド証明書発行手順については、こちらで紹介しています。