Windows Server + IIS でのSSLオレオレ証明書

IISで既にSSLを使っていて、更にSSL立てたい場合を想定。

とりあえず、SSLの使用を考えた場合に一番無難なIPベースでの対応。

前提

  • 事前にopensslでオレオレCAの証明書&ブラウザ用のを作っておく

手順

NICに新IPを追加

Windows Server 2008の場合、ネットワークのプロパティ→ネットワーク接続の管理で表示
あとは、ネットワークカードに複数のIPアドレスを割り当てる:Tech TIPS - @ITのとおり、TCP/IPv4のプロパティ→詳細設定から、IPアドレスを追加

サーバー証明書の要求を作成

詳しくはRequest an Internet Server Certificate (IIS 7) | Microsoft Docsを参照。

  1. IISマネージャを起動
  2. サーバーのホームから、[サーバー証明書]を選択
  3. [証明書の要求の作成]を選択
  4. 一般名(M)、組織(O)、組織単位(OU)、市区町村(L)、都道府県(S)、国/地域(R)を全部入力して[次へ]
  5. 暗号化サービス プロバイダを選択して[次へ]
  6. ファイル名を適当に入力して[終了]

CSRファイルの拡張子がデフォルトで".txt"でびっくりしますが、PEM形式のファイルはDER形式のファイルをBase64エンコード処理し,テキスト形式にしたファイルなので、何も問題有りません。
強いて言えば.pemにした方が判りやすいかも。

opensslで要求に署名

予め用意してあるオレオレCAの証明書と秘密鍵を使って、CSRファイルに署名します。
openssl.cnfをちゃんと修正しておけば、CSRファイル名と出力ファイル名の指定程度で済むのでやっておくべき。
詳しくはhttp://nai.homelinux.net/ssl.htmlの「おれおれCAで署名」を参照。

サーバー証明書IISにインストール

Install an Internet Server Certificate (IIS 7) | Microsoft Docsを参照
証明書のパスとフレンドリ名を指定するだけです。
以降、フレンドリ名で証明書を扱いますので、分かりやすい名前を付けます。

  1. IISマネージャを起動
  2. サーバーのホームから、[サーバー証明書]を選択
  3. [証明書の要求の完了]を選択
  4. [証明機関の応答が含まれるファイルの名前]、[フレンドリ名]を入力

IISサイトを新IPで追加

既に作成済みなら飛ばして次へ。

IISサイトにサーバー証明書をバインド

http://www.securestage.com/jp/resources/installation/MS_IIS7.phpサーバー証明書の有効化を参照。

  1. 対象のサイトの[バインドの編集]を選択
  2. サイト バインドの編集
    • IP アドレス:対象のIPアドレス
    • ポート:443とか
    • SSL 証明書:対象のフレンドリ名を選択

*1:apacheだとIPベースのVirtual Hostなんですが、IISだとなんて言うんだろう?