こんにちは。
以下に、Azure Cloud Services における SSL (https) の証明書の設定方法について記載します。(今回、開発用の証明書を使用します。)
補足 : IIS Express では、開発用の証明書を自動で設定しますので、以下のような面倒な設定は不要です。
また、Azure Web App (旧 Azure WebSite) を使用する場合も、独自ドメインを使用しないならば、既定の証明書を使って https (SSL) で接続できます。
証明書の作成
まず、https (SSL) 接続のための証明書を作成します。
本来は、信頼された正規の証明機関で必要な手続きを実施 (もしくは、Windows Server で、ドメインで利用可能な証明書を作成) することになりますが、ここでは、開発時も簡単に扱えるように、開発用の自己証明書を使用します。
開発用の証明書は、openssl や Visual Studio コマンド プロンプトから簡単に作成できます。
概念は、秘密キー (.pvk ファイル) と公開用の証明書 (.cer ファイル) を作成し、これらを使用して証明書情報を交換するための Personal Information Exchange (.pfx ファイル) を作成しますが、IT Pro エバンジェリストの安納が以下で手順を記載してくれていますので、ここでは、詳細のステップの説明は省略します。(手順については、下記のブログを参照してください。)
[安納さんのブログ] Azure for ITPRO : 自己署名証明書を作成する
http://blogs.technet.com/b/junichia/archive/2010/11/09/3366763.aspx
なお、上記で説明している makecert コマンド (下記) ですが、-n オプションの eventsvcdemo.cloudapp.net は、配置先の DNS にあわせて変更しておいてください。
例えば、下記では、Windows Azure のサイトで使用するための自己証明書を作成していますが、ローカル環境におけるデバッグ用として、CN=localhost などの証明書も作成しておくと良いでしょう。(つまり、あるサイト用の証明書を別のサイトで使うことはできませんので、サイトに応じて証明書を準備してください。)
rem -- なんちゃって CA の作成makecert -r -pe -n "CN=My Root Authority" -ss CA -sr CurrentUser -a sha1 -sky signature -cy authority -sv CA.pvk CA.cerrem -- なんちゃって server 証明書の作成makecert -pe -n "CN=eventsvcdemo.cloudapp.net" -a sha1 -sky Exchange -eku 1.3.6.1.5.5.7.3.1 -ic CA.cer -iv CA.pvk -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -sv server.pvk server.cerpvk2pfx -pvk server.pvk -spc server.cer -pfx server.pfx -pi <password>
上記の安納さんのブログに書かれた手順を踏むことで、前述した .pvk ファイル、.cer ファイル、.pfx ファイルが作成されます。
証明書の登録 – 開発環境の IIS に登録する場合
つぎに、上記で作成した Personal Information Exchange ファイル (.pfx ファイル) を Web サーバーに登録します。まず、開発環境用に、ローカル マシンの IIS (Internet Information Services) に登録する方法を記述します。
IIS マネージャーを開き、マシン名をクリックすると表示される [サーバー証明書] をクリックします。
すると、サーバー証明書の設定画面が表示されるので、[インポート] ボタンをクリックして、上記で作成した .pfx ファイルを登録します。(なお、この際、パスワードが必要になるので、上記で設定したパスワードを入力します。)
つぎに、IIS マネージャー上で証明書を使用するサイト (Default Web Site など) を選択し、操作ペインから [バインド] をクリックします。
サイト バインドの画面が表示されるため、この画面の [追加] ボタンを押して、下図の通り、https (ポート番号 443) のバインドを追加します。この際、下図の通り、SSL 証明書として、上記でインポートした証明書を選択します。
以降は、後述 (下記) のブラウザーの設定に進みます。
証明書の登録 – Azure Cloud Services に登録する場合
Azure Cloud Services に証明書を登録するには、下記の通り実施します。
まず、Azure Portal を開き、上記で作成された .pfx ファイルを Hosted Service の Certificates フォルダにアップロードします。
ポータル上に登録された証明書を選択すると、thumbprint の文字列 (例 : BE5EEBB88DD18654B92245A948959162A25DA944 など) が表示されるので、この値をコピーします。
つぎに、Azure に配置するプロジェクト側 (Visual Studio の Cloud プロジェクト) に、この証明書を使用するように設定します。(ここでは、Web Role に対して SSL を使用するように設定します。)
まず、Visual Studio の Cloud プロジェクトの Role フォルダにある Web Role のプロパティ画面を表示し、[Certificates] タブを選択して、下図の通り、証明書の設定を追加します。この際、[Name] 欄には、上記の makecert コマンドで指定した名前 (今回の場合、CN=eventsvcdemo.cloudapp.net) を指定し、[Thumbprint] 欄には、上記でコピーした thumbprint の文字列を設定します。
補足 : この設定をおこなうことで、Cloud プロジェクトの Service Configuration ファイル (.cscfg)、Service Definition ファイル (.csdef) の双方に、証明書の情報が記述されます。
つぎに [Endpoint] タブを選択して、下図の通り、https の Input エンドポイントを追加します。この際、[SSL Certificate Name] 欄として、上記で登録した証明書を選択してください。
ブラウザー側の設定 (開発時のみ)
上記では、開発用の自己署名の証明書を使用しましたので、証明書がクライアント (ブラウザー) に信頼されていません。このため、最後に、デバッグをおこなうブラウザーに、下記の手順で証明書を信頼させます。
(なお、現実のアプリケーション開発では、VeriSign など、一般に信頼された機関をルートに持つ証明書を使用してください。その場合は、下記の設定は必要ありません。)
まず、ブラウザーを開き、[インターネット オプション] 画面を表示します。
[コンテンツ] タブを選択し、[証明書] をクリックして、表示される画面で、[信頼されたルート証明機関] タブを開き、[インポート] をクリックします。(下図)
表示される画面で、上記で作成した CA の証明書 (CA.cer) ファイルを選択してインポートします。
Categories: Uncategorized