IIS 4.0 にて SSL を設定する

SERVER


SSL

SSL とは Web サーバとブラウザ間の通信を暗号化して機密性を高める技術です。クリアテキストによる認証が必要な場合などではこれを利用することでパスワード盗聴等の安全性を高めることができます。

今回はちょっといまどき古いのかもしれないですけど、 Microsoft Windows NT Server 4.0 上の IIS 4.0 にてこの SSL を設定するというのをやってみようと思います。Web サーバも証明書発行機関も自分所有の適当なものを利用する感じを想定していますので、公式の証明書機関を利用しようとしている方は気をつけましょう^^;;

 

サイトの署名依頼書を発行する

サイトの署名依頼書 (?) を発行するには、インターネットサービスマネージャを起動して設定したいサイトのプロパティを表示します。そして 「ディレクトリセキュリティ」 タブの 【キーマネージャ】 ボタンをクリックします。

キーマネージャ が立ち上がるので、[WWW] のところで右クリックして 「新しいキーの作成」 を選択します。するとあたしいキーの作成ウィザードが開始されますので、とりあえず 「証明機関に送信するファイルに要求を添付」 にチェックを入れてファイル名を指定します。ディフォルトでは "C:\NewKeyRq.txt" となっていて、ここに署名依頼書が作成されます。

続いて作成するキーの名前とパスワード、およびビット長を指定します。ビット長はとりあえず 512 を利用することにしました。

そして組織名と部門名、コモンネームの指定です。組織名と部署名に関してはまあ適宜^^;; という感じですね。コモンネームというところにはサイトのドメイン名を指定します。つまり、たとえば www.station.ez-net.jp にて証明書を使おうとしているならば www.station.ez-net.jp を指定します。

そして国名と都道府県、市町村名を入力します。日本ならば JP で、その他もとりあえずアルファベットで指定しておきましょう。

そして氏名、電子メールアドレス、電話番号の入力です。これらは証明書機関が何かの際に問い合わせに使う情報だそうで、証明書の発行とは直接縁がないそうです。

 

これで情報の入力は完了です。サイトの署名依頼書が発行されて、最初に指定したファイルに保存されます。

 

証明書を発行する

先ほどの署名依頼書 NewKeyRq.txt を認証機関を組み込んだ Linux へコピーします。

そして次のような感じで署名をして証明書を発行します。ここで ca.conf は証明書機関の設定ファイルです。ここに CA (証明書発行機関) の設定情報を用意してあるとして話を進めています。

/usr/bin/openssl ca -batch -config ca.conf -out NewKey.crt -infiles NewKeyRq.txt

これを実行すると、NewKey.crt として証明書が発行されます。

 

証明書を組み込む

ふたたび Web サーバ側の設定です。先ほど作成した NewKey.crt をこのサーバ上へ持ってきた上で次のような感じに設定を進めていきます。

持ってきた NewKey.crt ですけど、これを少々編集する必要があります。テキストエディタを開いて、-----BEGIN CERTIFICATE----- を含むこの中の情報以外を削ります。

たいした例ではないですけど、こんな感じになります。(データは架空のものです)

-----BEGIN CERTIFICATE-----
A4MTYzNloXDTA0MDgxMzA4MTYzNlowfDELMAkGA1UEBhMCSlAxETAPBgNVBAgT
TAPBNVBAgTCEtBTkFHQVdBMREwDwYDVQQHEwhZT0tPSEFNQTEVMBMGA1UEChMM
WFzeSBOZXR3b3JrMQswQYDVQQLEwJDQTEcMBoGA1UEAxMTc2FrdXJhLmV6LW5l
EtBTkFHQVdBMRUwwYDVQQKEwxFYXN5IE5ldHdvcmsxGTAXBgNVBAsTEEhpbWF3
mUuanAwXDANBgkqhkiGw0BAQEFAANLADBIAkEArQjhKAK3amE8QC3rgVM9Die2
XJpIFN0YXRpb24xKDAmBgNVBATH2hpbWF3YXJpLndvcmtzcGFjZS5lei1uZXQu
wettJZVy1qyWlP0Izb/UbuDKM/eUzbe3HF4cU+Ul3mJoGf0FyEkGNoh8/50QID
wEB/zARBglghkgBvhCAQEEBAMCAfYwDQYJKoZIhvcNAQEEBQADgYEAZqPFDFBN
QABo0IwQDAdBgNVHQ4EFgQUpU215M5GU7sBBl3ufhNFV4XAwkwDAYDVR0TBAUw
IIChjCCAe+gAwIBAgIBBTANBgkqhkiG90BAQQFADCBlTELMAkGA1UEBhMCSlAx
9S3ifXlT04kF4SGMIMxfPo4rYr9vHBN9RiD7kdjNMCOclUuHQGvp6PCqdSk9Iq
PPK0rV7aVCNqqEQDAIDsY6wWEAJesEgdaT/Sy03bQKeWr4aFrlvQPZOWC0U/Ws
ezyUE35/2b0vICEUdWsone6NasyWfIMSQw=
-----END CERTIFICATE-----

そして、インターネットサービスマネージャからふたたびキーマネージャを起動します。

すると先ほど指定したキー名が [WWW] の下に表示されているので、そこで右クリックします。そして 「キー証明書のインストール」 を選択して、先ほど編集した NewKey.crt を指定します。

パスワードを問われますので、署名依頼書を作成した際に指定したパスワードを入力します。

うまくいくと、続いて 「サーバ結合」 ダイアログが表示されます。ここでこの証明書を適用する (SSL を利用する) IP とポート情報を登録できます。

これで基本的な設定は完了です。

 

あとはインターネットサービスマネージャで SSL に使用するポート番号や、他の詳細な調整を行いましょう。

設定の注意点としては、どうも SSL はホストヘッダーによるサイトの分岐というものが出来ないようです。なので複数の SSL サイトを構成したい場合にはポート番号または IP アドレスを分けるなどの措置をとる必要があるようです。

また、通常の HTTP ポートを割り当てないということは出来ないようなので、クリアテキストによる認証を行うような場合は 「このリソースにアクセスするときに、セキュリティで保護されたチャネルを必要とする」 にチェックを入れて、間違えて暗号化していないほうで接続してしまうことのないようにしたほうがいいかもしれないです。