.well-knownに自動応答して検証していますが、
今回、リバースプロキシを経由しているため、Let’s Encrypt からの HTTP-01 検証リクエストが win-acme の SelfHosting に届かないため、SelfHostingが利用できません。
調べたところ、DNS-01方式と言うものがあり、win-acmeがDNSサービスのAPIを呼び出してDNSレコードに検証用の値を登録する方法があると聞きました。
どのように設定するか教えてください。.well-knownに自動応答して検証していますが、
今回、リバースプロキシを経由しているため、Let’s Encrypt からの HTTP-01 検証リクエストが win-acme の SelfHosting に届かないため、SelfHostingが利用できません。
調べたところ、DNS-01方式と言うものがあり、win-acmeがDNSサービスのAPIを呼び出してDNSレコードに検証用の値を登録する方法があると聞きました。
どのように設定するか教えてください。win-acmeをサイト(https://www.win-acme.com/)からダウンロードします。
この時、"plugin support"のバージョン(win-acme.v2.x.x.xxxx.x64.pluggable.zip)をダウンロードします。
ダウンロードしたZIPファイルを展開して配置します。
DNSサーバーに対応したプラグインをダウンロードします。今回は、Azure DNSを利用しますので、Azure DNS用のプログインをダウンロードします。
ダウンロードは(https://github.com/win-acme/win-acme/releases/)のページからできます。
ダウンロードしたZIPファイルを展開して、win-acmeと同じディレクトリに配置します。
Azureポータルの画面で、Microsoft Entra IDの設定画面を開きます。
左側のメニューの[アプリの登録]の高j目をクリックします。下図の画面に切り替わります。右側のエリアの[新規登録]のボタンをクリックします。
アプリケーションの登録画面に切り替わりますので、アプリケーション名を入力して、新しいアプリケーションを登録します。
サポートされているアカウントの種類は[シングルテナントのみ]とします。リダイレクトURIは設定しないです。
アプリの登録画面が表示され、アプリケーションが登録できました。
アプリケーションの項目をクリックし、アプリケーションの詳細画面を表示します。
左側のメニューの[証明書とシークレット]の項目をクリックします。右側のエリアの[クライアント シークレット]のタブをクリックします。
下図の画面に切り替わります。
[新しいクライアント シークレット]のボタンをクリックします。右側にスライドインダイアログが表示されます。[名前]のテキストボックスに
クライアントシークレットの識別名(何でもよい)を入力し、有効期限を選択し、ダイアログ下部の[追加]ボタンをクリックします。
新しいクライアントシークレットが作成されます。作成された直後のみ、クライアントシークレットの値が表示されます。
クライアントシークレットの値を控えておきます。
作成したアプリケーションがDNSのレコードを変更できるよう権限を割り当てます。
アプリケーションが操作するDNSドメインがあるAzure DNSのドメインの設定画面を開きます。
左側のメニューの[アクセス制御 (IAM)]の項目をクリックします。下図の画面に切り替わります。
右側のエリアの上部の[ロールの割り当て]タブをクリックします。下図の画面に切り替わります。
[追加]ボタンをクリックし、ドロップダウンメニューの[ロールの割り当ての追加]の項目をクリックします。
下図の[ロールの割り当ての追加]画面が表示されます。
検索ボックスに"DNS"と入力します。ロールの項目が絞り込まれますので、[DNS ゾーンの共同作成者]のロールをクリックして選択します。
選択後画面下部の[次へ]ボタンをクリックします。
[アクセスの割当先]を[ユーザー、グループ、またはサービス プリンシパル]のラジオボタンにチェックをして、[メンバーを選択する]のボタンをクリックします。
右側にスライドインダイアログが表示されますので、先ほど作成したアプリケーションをクリックして選択します。ダイアログ下部の[選択]ボタンをクリックします。
ページ下部の[次へ]ボタンをクリックします。
[レビューと割り当て]ボタンをクリックしてロールを追加します。
以上でロールの追加ができました。
SSL証明書を作成します。キーの設定等ありますので、対話的な操作ではなくコマンドで確実に実行する方法を利用します。
次のコマンドをPowerShellで実行します。
cd (win-acmeの配置ディレクトリ)\win-acme.v2.2.9.1701.x64.pluggable
.\wacs.exe `
--verbose `
--source iis `
--host (更新するホスト名) `
--validationmode dns-01 `
--validation azure `
--azuretenantid "<Tenant ID>" `
--azureclientid "<Application / Client ID>" `
--azuresecret "<Client Secret の値>" `
--azuresubscriptionid "<Subscription ID>" `
--azureresourcegroupname "<Azureリソースグループ名>" `
--azurehostedzone "<変更する Azure DNSのドメイン名>" `
--store certificatestore `
--installation iis
(更新するホスト名) は "hostname.ipentec.net" などのホスト名を入力します。
テナントIDを入力します。Entra ID の画面の[テナント ID]に表示されている値を入力します。
先に作成したアプリケーションのIDを入力します。
先に作成したアプリケーションのクライアントシークレットの値を入力します。
変更するAzure DNSのDNSゾーンの[サブスクリプション ID]で確認できます。
リソースグループ名を入力します。変更するAzure DNSのDNSゾーンの[リソース グループ]で確認できます。
変更するAzure DNSのDNSゾーン名を入力します。
コマンドを実行すると、証明書の取得とIISへの設定が実行されます。
--source iis がコマンドに設定されている場合、バインドのホスト名をもとにサイトを自動判定しますので、
IISのサイトIDの指定は不要です。一方で、サイトが自動判定できない場合には、--siteid オプションを利用して、明示的にIISのサイトを指定します。
siteidのオプションは次の通りです。
--source iis --siteid (サイトIDの番号)