こんにちは、前回の記事で少しはOpenSSLと仲良くなれた気がするwakです。
前回に続き、この証明書をWindows 2012 R2上のIISにインポートしてHTTPSのWebサイトをホストしてみます。これがうまく行けば、クライアント側で初回にルート証明書の登録を済ませるだけで、試験のためのサーバー証明書がいくらでも作れることになります。
もくじ
- サーバーの準備
- IISのインストール
- 証明書のインポート
サーバーの準備
まずAWSでWindows Server 2012 R2のインスタンスを作成し、まっさらのWindows Serverを準備します。ここはもういいでしょう。
余談ですが、日本語版Windows Server(SQL Serverなし)のAMIが欲しいときは、コミュニティAMIで「Windows Server 2012 R2 Japanese」を検索し、さらにページ内検索で「SQL」をハイライト表示して、「SQL」が 含まれない ものを探すと手っ取り早いです。
IISのインストール
Install-WindowsFeature
コマンドレットでIISをインストールしましょう(このためにサーバーマネージャーを立ち上げるのは面倒なだけです)。まずPowerShellを起動し、
Install-WindowsFeature Web-Server -IncludeAllSubFeature
でインストールが始まります。
多少時間がかかるので、インスタンスのクラスはちょっと上げておくといいかもしれません。
完了しました。これでもうIISはサービスを開始しているので、デフォルトで作成されるページを開くことができます。
証明書のインポート
次に、前回OpenSSLで作成したサーバー証明書をそのままIISにインポートしましょう。
新しいWebサーバーに証明書をインストールするのであれば、
の両方の情報が必要になります。この2つの情報をまとめてパッケージにできるのがpfx形式で、IISはこのpfx形式のファイルしか読めません。ファイル形式はこのようにしてコンバートすることができます。
openssl pkcs12 -export -inkey server.key -in server.crt > server.pfx
これで得たserver.pfx
をWindows Serverにコピーします。IISマネージャーを立ち上げ、「サーバー証明書」メニューを開きます。
「インポート」メニューを開き、pfxファイルをインポートします。上のコマンドの通りに作成したのであればパスワード(パスフレーズ)は指定していないはずなので空欄で構いません。
これでこのIISには証明書がインポートできました。Webサイトでこの証明書を使うようにバインドすれば終わりです。
ただし、このWindows Server/IISはこの証明書の親となる証明局を知りません。謎の人物に署名されたサーバー証明書を押しつけられて「これを使え」と言われたような形ですから、当然このようなエラーが出ます(が、無視できます)。
つまり今、このWindows Serverは
というちょっと不思議な(商用環境ではありえない)状態になっています。
おまけ: Install-WindowsFeature について
Windows Server 2008 R2からあったAdd-WindowsFeature
と同じで、PowerShellからWindows Serverに機能を追加するためのコマンドレットです。面倒なGUIの手動操作のかわりにコマンドだけで完結するので便利ですし、セットアップの自動化には必須です。
機能と名前との対応はGet-WindowsFeature
コマンドレットで得ることができます。たとえば「Active Directory 証明書サービス (ADCS; Active Directory Certificate Services)」が提供する「証明機関」機能が必要になったとします。そんなときはとりあえずこれを実行すれば、
こうして見つかります。名前が判明したら、このようにインストールできることが分かります。
Install-WindowsFeature ADCS-Cert-Authority
最後に
今回はLinux上のOpenSSHで作成した証明書をIISにインポートするという少しひねくれたことをやりました。次回はIISで作成した証明書をLinux上のApacheに入れるということをやってみます。