はじめに
公的証明書を利用するサービスなどを 検証 する事があると思います。
証明書は取っつきにくいですし、利用するには コストが掛かるため、中々手を出せない領域かなぁ・・と思います。
私の方は、約1年前(2023 年 6 月)に、Azure を使って 証明書を初めて発行しましたが、やはり 本物の証明書を扱う事で、学ぶことが多くありました。
この度、もう1枚の証明書を発行する機会があったため、手順と 画面キャプチャを整理しましたので、この記事で紹介したいと思います。
Azure で 公的証明書を発行する場合、"App Service 証明書" というサービスを使います。
名称こそ "App Service 証明書" となっていますが、App Service 以外でも活用することが可能です。
以下の公開情報の手順を元にしています。
公開情報:Web アプリの App Service 証明書を作成して管理する
前提事項
証明書を発行する前に、ドメイン を取得して 外部公開済み である必要があります。
実際に 所持しているドメインに対して、証明書を発行します。
ポイント
- ドメインを取得済みであること
- 外部 DNS サーバーで 名前解決を提供していること
- 上記の DNS サーバーで TXT レコードで任意の文字列を公開可能なこと
- 上記の DNS サーバーに、ネイキッドドメイン名 を解決できるように A レコードを追加済であること
私の環境の場合は、Azure の App Service ドメイン を使って、"carol226.com" というドメインを取得しており、Azure DNS ゾーン を使って、"sfb" という A レコードを作成して 外部 Web サービスの IP アドレス を指定しました。
nslookup sfb.carol226.com を実行すると、IP アドレスが応答される状態です。
Azure で ドメインを購入し、Azure DNS ゾーンで 外部 DNS を公開する方法については、以下の記事を参考にしてください。
ポイント として記載した条件を満たした ドメイン と DNS であれば、プロバイダーの DNS サービスを利用しても、自社のデータセンターで運用している DNS サーバー でも 理論上問題ないと思います
費用について
App Service は、有料のサービスです。
Azure の 無料サブスクリプション では利用する事ができないため、ご注意ください。
Azure を 有料サブスクリプションにアップグレードしてから、利用が可能になります。
公開情報:App Service の料金
https://azure.microsoft.com/ja-jp/pricing/details/app-service/windows/
Azure App Service の証明書 欄より抜粋(2024 年 5 月 26 日 時点)
この記事では、標準 SSL 証明書 を発行した時の画面キャプチャを使用しています。
発行される証明書のスペック
ネイキッドドメイン名 を sfb.carol226.com として指定した場合に作成された 標準 SSL 証明書 の内容です。
フィールド | 値 |
---|---|
発行者 | Go Daddy Secure Certificate Authority - G2 |
署名アルゴリズム | sha256RSA |
署名ハッシュアルゴリズム | sha256 |
有効期間 | 1年 |
サブジェクト | CN = sfb.carol226.com |
公開キー | RSA (2048 Bits) |
公開キーのパラメーター | 05 00 |
拡張キー使用法 | サーバー認証 (1.3.6.1.5.5.7.3.1) クライアント認証 (1.3.6.1.5.5.7.3.2) |
CRL 配布ポイント | URL=http://crl.godaddy.com/gdig2s1-20547.crl |
サブジェクト代替名 | DNS Name=sfb.carol226.com DNS Name=www.sfb.carol226.com ※ www なし と あり で 2つ作成されます |
基本制限 | Subject Type=End Entity Path Length Constraint=None |
キー使用法 | Digital Signature, Key Encipherment (a0) |
証明書作成の流れ
証明書の作成は、以下の 4 ステップで行います。
- Azure リソース(App Service 証明書)の作成
- 証明書の発行
- ドメインの所有権を確認する
- 証明書のダウンロード
1. Azure リソース(App Service 証明書)の作成
まずは、Azure 上で 証明書 を管理していくための リソース を作成します。
このリソースを使って、証明書を発行したり、更新したり、再発行するなどの管理操作を実施していきます。
公開情報:App Service 証明書を購入して構成する
https://learn.microsoft.com/ja-jp/azure/app-service/configure-ssl-app-service-certificate?wt.mc_id=mvp_407731&tabs=portal#buy-and-configure-an-app-service-certificate
- Azure Portal の 検索バーに「証明書」と入力 ① し、App Service 証明書 を選択 ② します。App Service 証明書 のページが開いたら、作成 をクリック ③ します。
-
基本 タブでは、以下の設定を行い 確認および作成 を押します。
SKU を 選択します(緑枠の箇所)
キャプチャでは、Standard(標準 SSL 証明書)を選択しています。
ネイキッドドメインのホスト名 は、実際に 名前解決 で利用したい ドメイン名 を入力します。
証明書名 は、Azure リソースの名称ですので 任意の名前で構いません。
自動更新 は、任意で選択してください(私は、永続的に利用する想定で 有効化 しましたが、後で設定変更も可能です)
-
確認および作成 タブでは、内容を確認して 作成 を押します。
- リソースが作成されると。以下の通知が表示されます。
- 作成の完了画面です。リソースに移動 を押します。
- 作成された Azure リソース の画面です。緑下線部が 発行の保留中 になっています。
2. 証明書の発行
リソースを作成した段階では 発行の保留中 になっており、まだ 証明書 は発行されていません。続けて、手順1:Key Vault への格納、手順2:ドメインの所有権の確認、手順3:割り当て を行うことで、証明書を利用できるようになります。
公開情報:証明書を Azure Key Vault に格納する
https://learn.microsoft.com/ja-jp/azure/app-service/configure-ssl-app-service-certificate?wt.mc_id=mvp_407731&tabs=portal#store-the-certificate-in-azure-key-vault
- 左ペインから 証明書の構成 を選択し、手順1:格納 の欄をクリックします。
-
キーコンテナーから選ぶ をクリックします。
- 以下の画面では、新しく発行した証明書を保管するための Azure KeyVault のコンテナーを選択します。コンテナーを指定したら 選択 を押します。
既存のコンテナー を選択する(赤枠)か、新しく作成(緑枠)します。
- KeyVault の選択が完了すると、以下の画面になります。
3. ドメインの所有権を確認する
ドメインの所有権を確認するまでは、証明書を利用することができません。
公開情報には、以下の4通りの確認方法が紹介されていますが、本記事では ドメイン検証 を採用しています。
- App Service の確認
- ドメインの検証
- メールによる確認
- 手動による確認
公開情報:ドメインの所有権を確認する
https://learn.microsoft.com/ja-jp/azure/app-service/configure-ssl-app-service-certificate?wt.mc_id=mvp_407731&tabs=portal#confirm-domain-ownership
- 再び 証明書の構成 の画面に戻ると、手順1:格納 にチェックが入った状態になります。続けて 手順2:確認 の欄をクリックします。
- 今回は、ドメインの検証 の方法で確認することにします。
この場合は、ドメイン確認トークン を DNS サーバーに登録する必要があります。
下図は、Azure DNS ゾーン 上に TXT レコードを追加した際の画面です。
TXT レコードは、1つの @ の行に 複数のレコードを追加する事ができます。
別の目的で登録済みの TXT レコード と共存させられます。
赤枠の部分が 今回追加した ドメイン確認トークン です。
- DNS 側で、TXT レコードが構成できたら 確認 を押します。右上のような 通知が表示されれば OK です。
- うまく TXT レコードの確認が完了すると、下図のように 証明書はドメイン確認済みです という表示になります。
-
証明書の構成 の画面に戻ると、以下のように 3か所すべてに チェック が入った状態になっています。
- 概要 ページを表示すると 証明書の状態 が 発行済み になっている事が判ります。
4. 証明書のダウンロード
発行した証明書は、KeyVault の中に保存されていますが、以下から ダウンロードできます。
公開情報;App Service 証明書をエクスポートする
https://learn.microsoft.com/ja-jp/azure/app-service/configure-ssl-app-service-certificate?wt.mc_id=mvp_407731&tabs=portal#export-an-app-service-certificate
以上で、証明書の作成と発行は完了です。
この証明書は 任意のサービス で サーバー証明書 として利用が可能です。
次章では、例 として IIS の Web サイト にバインドして利用した 例 を紹介しています。
(おまけ) 作成した証明書を IIS にバインドしてみる
以降は、ダウンロードした証明書を IIS にバインドして公開してみた例です。
App Service 証明書 を IIS の Webサイトで公開することも可能・・・ということをご理解いただけると思います。
この手順は、先に IIS を構築して、HTTP で Web サイトが公開された状態になっていることを前提にしています。
証明書のインポート
- Web サーバー (IIS) へダウンロードします。
- ローカルコンピューター に保存します。
- ダウンロードしたファイルを選択して 次へ を押します。
- 特に何も指定せずに 次へ を押します。
- 特に何も指定せずに 次へ を押します。
- 以下の画面になったら、完了 を押して終了します。
証明書を Web サイト にバインドする
- インターネットインフォメーションサービス マネージャー を起動します。
以下の画面で 公開したい Web サイト(Default Web Site)を選び、右ペインの バインド を押します。
-
追加 を押します。
- 以下のように HTTPS のサイト条件を追加して、SSL 証明書 欄で 先ほどインポートした証明書を選択してから、OK を押します。
証明書が選択出来ない場合は、証明書の作成やインポートで 何かミスがあります。
- 以下のように HTTPS のサイトが追加されたことを確認して 閉じる を押します。
- すると、以下のように 世界中の任意の PC から、URL を指定して HTTPS の Web サイトを参照できるようになっています。証明書も セキュリティで保護された状態であることを確認できます。
以上のように Azure の App Service 証明書 を発行して、Azure 以外のサービスで利用できることをご理解いただけたと思います。