SSL の設定方法
SSL の設定は意外と知られていないようです。 証明書とか CA とか CSR とか CRL とか、いろいろな用語が出てきますから、確かに慣れないとなかなかピンとこないかもしれません。
この資料では、SSL の基本的な考え方と設定方法について説明します。
SSL の設定に必要なこと ~ サーバー証明書の作成方法
SSL を利用するには、IIS にサーバー証明書をインストールする必要があります。
既存のサーバー証明書の確認
IIS にサーバー証明書がインストールされているかどうか確認するには、IIS マネージャから確認できます。
サーバー証明書 (Server Certificate) から確認すると、インストールされていればサーバー証明書の一覧がこちらに表示されます。
私の環境ではまだひとつもインストールされていないので、こちらのリストには何も表示されていません。
サーバー証明書作成の第一歩 ~ CSR の作成
ではサーバー証明書を作成してみましょう。
サーバー証明書 (Server Certificate) のメニューから、Create Certificate Request をクリックします。 (すみません、日本の UI がわからないのですが 「CSR の作成」とか、そういう感じだと思います。)
すると、ウィザードが始まります。
ここでは適当に入力していますが(苦笑)、大事なところですから本番環境ではまじめに入力してください。
一番のポイントは、コモンネーム (Common name) です。これは、本番環境のときにブラウザから要求させるホスト名と同一にしてください。 つまり、https://www.example.com/ という URL でリクエストさせることを想定しているなら、 コモンネームは www.example.com になります。
コモンネームが実際に本番環境で URL として使うものと異なると「不正な証明書である」 という警告メッセージが出てしまいます。
同様の考え方で、社内の Windows ネットワークなどでマシン名でアクセスさせるときには、 このスクリーンショットのように、マシン名を入力しておけば OK です。
それから、組織名 (Organization) は通常会社名になります。
上記のポイントを抑えればあとは、ご利用の証明機関の指示に従ってください。 ここではデフォルトを受け入れて CSR を作成します。
証明書要求 (certificate request) はテキスト形式で作成されます。適当にファイル名を決めてください。
Finish をクリックすると、完了です。(何もメッセージが出ないんですね・・・)
正常に修了すると、上で指定したテキストファイルに CSR が作成されます。 中身を見るとおよそ次のような内容です。
-----BEGIN NEW CERTIFICATE REQUEST----- MtIDTTCCArYCAQAwZDELMAkGA1UEBhMCVVMxCzAJBgNVBXgMAkNBMREwDwYDVQQH DAhUb3JyYW5jZTENMAsGA1UECgwESG9tZTEPMA0GA1UECwwGRmFtaWx5MRUwEwYD VQQDDAxpc2tyc3J2b3AzNjAwgZ8wDQYJKoZIhvcNAQEABQADgY0AMIGJAoGBAMBv AYI3DQICMWQwYgIBAR5aAE0AaQBjAHIAbwBzAG8AZgB0ACAAUgBTAEEAIABTAEMA ... aABhAG4AbgBlAGwAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8A dgBpAGQAZQByAwEAMIHPBgkqhkiG9w0BCQ4xgcEwgb4wDgYDVR0PAQH/BAQDAgTw MBMGA1UdJQQNMAoGCCsGAQUFBwMBMHgGCSqGSIb3DQEJDwRrMGkwDgYIKoZIhvcN YBpfL6E91bMaQuU75UYupwgcW8/HXGJFFRFjgkDKel8q9XlDKK4A8r/CE9BCYBh2 PtMlRlASwLmu1G7b4NoZS6AIavb3iWAyqaUFJ5SIISy7 -----END NEW CERTIFICATE REQUEST-----
証明書の作成 ~ CSR を証明機関に送る
上のステップで作成した CSR を、証明機関に送ると証明書を発行してもらえます。
証明書を発行する手続きは、ピンからキリまであって、VeriSign のようにしっかり審査があるところもあれば、 簡単な情報入力だけで証明書を発行してくれる証明機関もあります。
例えば、COMODO 社の InstantSSL のサービスのように、90 日間利用できるサーバー証明書を無料で発行してくれるところもあります。
あるいは社内のネットワークで利用するなど、CA 証明書自体を配布可能な環境であれば、 Windows Server のサービスのひとつである Active Directory Certificate Services (ADCS) を利用することも可能です。
Windows の証明機関を利用してサーバー証明書を発行する
ここでは Windows の証明機関 (ADCS) を利用してサーバー証明書を作成しましょう。
ここでは Active Directory Certificate Services (ADCS) をインストールしたサーバーでは、 Certification Authority ロールに加えて、Certification Authority Web Enrollment もインストールしてあり、 ブラウザから証明書作成 (署名) 要求を送信できるようにしてあります。
証明機関をインストールしたサーバーに、ブラウザからアクセスします。
URL は http://マシン名/certsrv/ です。
すると次のような画面が表示されます。
証明書の要求 (Request a certificate) をクリックします。
advanced certificate request をクリックします。
下側のリンク Submit a certificate request by using a base-64-encoded... をクリックします。
図のように、CSR の内容を貼り付けて、Submit をクリックします。
これで正常に証明書の要求が出来ました。
発行待ちの証明書の確認
ここで、試しにもう一度証明機関のウェブサイトのトップページに戻ってみてください。 URL は http://マシン名/certsrv/ でしたね。
よく見ると、発行待ちの証明書要求のステータスを見る (View the status of a pending certificate request) というリンクがあります。それをクリックしてください。
すると、このように発行待ちの証明書があることが確認できます。
証明機関サービスで、証明書を発行する
それでは証明機関側のサーバーで、証明書を発行しましょう。
ADCS をインストールしたマシン上で、証明機関の管理画面を開き、Pending Requests を確認します。
すると次のように、確かにサーバー証明書の発行要求が届いていることがわかります。
証明書を発行するには、ペンディングの要求を右クリックして、発行 (Issue) を選択します。
すると、確かにペンティングから発行済み証明書 (Issued Certificate) に移動します。
サーバー証明書の取得とインストール
IIS マシンに戻り、先ほどと同様に発行待ちの証明書の確認画面を確認します。
次の画面のように確かに証明書が発行されたことがわかります。
証明書のダウンロード (Download certificate) をクリックし、 *.cer ファイルを適当な場所に保存します。(スクリーンショットでは Base64 が選択されていますが、 DER のままでも構いません)
IIS マネージャを開き、Complete Certificate Request をクリックします。
次の画面で先ほどダウンロードした、*.cer ファイルを指定し OK をクリックします。
すると、次のようにサーバー証明書がインストールされます。
CA 証明書のインストール
通常はここまでの手順で証明書のインストールは完了するのですが、 今回は自前で用意した証明機関を利用したので、CA 証明書をインストールしなければなりません。
それは、どういうことでしょうか。
上記の証明書のリストページでサーバー証明書のプロパティを見てください。
よく見ると、赤いバツ印がついています。
そしてメッセージ「This certificate cannot be verified up to a trusted certification authority.」 が記載されています。
すなわち、元来サーバー証明書は信頼できる証明機関から署名されてはじめて意味のあるものなのですが、 ここでは自前で用意した (わけのわからぬ) 証明機関を利用しているために、 Windows に証明機関自体に対する証明書がインストールされていないので、「この証明書はヘンだぞ」と警告を出しているわけです。
ですから、この証明機関自体の証明書 (これを CA 証明書といいます) をインストールすれば、 この問題は解決できます。
この CA 証明書は先ほどの ADCS の Web 画面で入手できます。
リンクの一番下、Download a CA certificate... をクリックしてください。
この画面で Download CA certificate をクリックし、*.cer ファイルをダウンロードします。
ダウンロードした *.cer ファイルを右クリックして、インストールします。
CA 証明書のレジストリに登録します。
Next をクリックします。
Finish をクリックすると、次のような警告メッセージが表示されますが、Yes をクリックして 証明書をインストールします。
インポート完了後に、証明書のプロパティを見ると赤いバツ印がなくなっていることがわかります。
以上でサーバー証明書のインストールは完了です。
SSL の設定
サーバー証明書のインストールが完了すれば、IIS の設定は簡単です。
サイトのバインディングの設定画面で、タイプに https を選択して、 ポート番号 (デフォルトは 443) とサーバー証明書を選択すれば OK です。
ちなみに、私のテスト機では Skype を起動していたので、ポート 443 のバインディングが失敗して、 IIS が起動できませんでした (苦笑)。 通常はサーバー上で Skype を起動していることもないでしょうから、 あまりその点は心配ないと思いますが、一応書いておきます。
以下のコマンドでポートを利用しているプロセスの PID を探すことが出来ます。
> netstat -ano | findstr 443 TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 3688 TCP 0.0.0.0:7443 0.0.0.0:0 LISTENING 1920 UDP 0.0.0.0:443 *:* 3688 >