OpenSSLコマンドでオレオレ証明書を作り、ルート認証局としてサーバー証明書を発行する(IIS編)

こんにちは、前回の記事で少しはOpenSSLと仲良くなれた気がするwakです。

tech.sanwasystem.com

前回に続き、この証明書をWindows 2012 R2上のIISにインポートしてHTTPSのWebサイトをホストしてみます。これがうまく行けば、クライアント側で初回にルート証明書の登録を済ませるだけで、試験のためのサーバー証明書がいくらでも作れることになります。

もくじ

  1. サーバーの準備
  2. IISのインストール
  3. 証明書のインポート

サーバーの準備

まずAWSWindows Server 2012 R2のインスタンスを作成し、まっさらのWindows Serverを準備します。ここはもういいでしょう。

余談ですが、日本語版Windows Server(SQL Serverなし)のAMIが欲しいときは、コミュニティAMIで「Windows Server 2012 R2 Japanese」を検索し、さらにページ内検索で「SQL」をハイライト表示して、「SQL」が 含まれない ものを探すと手っ取り早いです。

f:id:nurenezumi:20150902182925p:plain

IISのインストール

Install-WindowsFeatureコマンドレットでIISをインストールしましょう(このためにサーバーマネージャーを立ち上げるのは面倒なだけです)。まずPowerShellを起動し、

Install-WindowsFeature Web-Server -IncludeAllSubFeature

でインストールが始まります。

f:id:nurenezumi:20150813220719p:plain

多少時間がかかるので、インスタンスのクラスはちょっと上げておくといいかもしれません。

f:id:nurenezumi:20150813220748p:plain

完了しました。これでもうIISはサービスを開始しているので、デフォルトで作成されるページを開くことができます。

f:id:nurenezumi:20150904110236p:plain

証明書のインポート

次に、前回OpenSSLで作成したサーバー証明書をそのままIISにインポートしましょう。

新しいWebサーバーに証明書をインストールするのであれば、

の両方の情報が必要になります。この2つの情報をまとめてパッケージにできるのがpfx形式で、IISはこのpfx形式のファイルしか読めません。ファイル形式はこのようにしてコンバートすることができます。

openssl pkcs12 -export -inkey server.key -in server.crt > server.pfx

これで得たserver.pfxWindows Serverにコピーします。IISマネージャーを立ち上げ、「サーバー証明書」メニューを開きます。

f:id:nurenezumi:20150904110319p:plain
f:id:nurenezumi:20150904110327p:plain

「インポート」メニューを開き、pfxファイルをインポートします。上のコマンドの通りに作成したのであればパスワード(パスフレーズ)は指定していないはずなので空欄で構いません。

f:id:nurenezumi:20150902185747p:plain

これでこのIISには証明書がインポートできました。Webサイトでこの証明書を使うようにバインドすれば終わりです。

f:id:nurenezumi:20150904110541p:plain

ただし、このWindows Server/IISはこの証明書の親となる証明局を知りません。謎の人物に署名されたサーバー証明書を押しつけられて「これを使え」と言われたような形ですから、当然このようなエラーが出ます(が、無視できます)。

f:id:nurenezumi:20150902190357p:plain

あとはこのIISHTTPSでアクセスしてみるだけです。

f:id:nurenezumi:20150904111022p:plain

つまり今、このWindows Serverは

  • 指定されたサーバー証明書を持っているが、その正当性は自分では判断できない
  • クライアント(=私のPC)はその親となるルート証明局を知っているので、そのサーバー証明書を問題ないと判断する

というちょっと不思議な(商用環境ではありえない)状態になっています。

おまけ: Install-WindowsFeature について

Windows Server 2008 R2からあったAdd-WindowsFeatureと同じで、PowerShellからWindows Serverに機能を追加するためのコマンドレットです。面倒なGUIの手動操作のかわりにコマンドだけで完結するので便利ですし、セットアップの自動化には必須です。

機能と名前との対応はGet-WindowsFeatureコマンドレットで得ることができます。たとえば「Active Directory 証明書サービス (ADCS; Active Directory Certificate Services)」が提供する「証明機関」機能が必要になったとします。そんなときはとりあえずこれを実行すれば、

f:id:nurenezumi:20150818142408p:plain

こうして見つかります。名前が判明したら、このようにインストールできることが分かります。

Install-WindowsFeature ADCS-Cert-Authority

最後に

今回はLinux上のOpenSSHで作成した証明書をIISにインポートするという少しひねくれたことをやりました。次回はIISで作成した証明書をLinux上のApacheに入れるということをやってみます。