最終回 Windows OSで作るVPNサーバ:在宅勤務を実現するリモート・アクセスVPN構築術(8/8 ページ)
今回はServer 2008 R2でVPNサーバを構築してみよう。SSTPやIKEv2などに必要な証明書サービスの導入方法も紹介。
ここまでの設定を行うと、IKEv2プロトコルでもVPN通信できるようになる。次の画面は、IKEv2で通信中のVPN接続の状態画面である。
だが、SSTPで接続しようとすると、やはりまだ次のようなエラーが表示されるはずである。
これは、失効サーバに接続できないというエラーである。
証明書失効リストとは
失効サーバとは、証明書の「失効リスト(CRL:Certificate Revocation List)」を管理するサーバのことである。証明書には発行者や有効期限などの情報が含まれているが、それとは別に、証明書の発行元から失効リストが発行されることがある(関連記事参照)。証明書が取り消されたなど、何らかの理由で証明書が無効になったことを意味するものだ。例えばコマンド・プロンプト上で「certutil -urlcache crl」とすれば、システムが現在保持している失効リスト(のサーバの一覧)を確認できる。
SSTPの接続時には、証明書の正当性チェックと共に、この失効リストの調査も自動的に行われるが、今回の場合は失効リストのサーバを用意していないのでこのようなエラーが発生している。公的な証明書ならインターネット経由で問い合わせ可能なので問題ないのだが、今回のように「勝手に」発行した証明書ではこのようなエラーになる可能性が高い。
これを解決する方法はいくつかある。
- 失効リストも手動でインポートする。
- 失効リストのサーバも用意する。
- OCSPのサーバを用意する。
- 失効リストのチェックを無効にする
手動インポートとは、証明書サービスのホームページで最新の失効リストを取得し(「最新の base CRL のダウンロード」というリンクをクリックして失効リストを保存する)、それをクライアント側へインポートすることを指す。しかし失効リストは頻繁に更新されるので有効期限が短く(1週間程度)、期限が切れるごとにこれを行うのは容易ではない。
失効リストのサーバやOCSP(Online Certificate Status Protocol)のサーバを用意するのが本来の方法であるが、設定はあまり簡単ではないので、今回は割愛する。なおOCSPとは、失効リストの問い合わせに対する応答を返すサーバのことで(先の関連記事中の「OCSPレスポンダ」参照)、Windows Server OSのEnterprise/Datacenter Editionでは、「Active Directory証明書サービス」役割において、「オンライン レスポンダー」という役割サービスとして用意されている。
[注意]
レジストリに不正な値を書き込んでしまうと、システムに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされることもあります。レジストリ・エディタの操作は慎重に行うとともに、あくまで御自分のリスクで設定を行ってください。何らかの障害が発生した場合でも、本Windows Server Insider編集部では責任を負いかねます。ご了承ください。
今回は手っ取り早い方法として、失効リストのチェックを無効にする方法を適用してみる。以下のサポート技術情報に、SSTPにおける失効リスト・チェックを無効にするためのレジストリの説明がある。
項目 | 内容 |
---|---|
キー | HKEY_LOCAL_MACHINEの \System\CurrentControlSet\Services\Sstpsvc\Parameters |
値の名前 | NoCertRevocationCheck |
種類 | REG_DWORD |
値のデータ | 1:無効にする |
SSTPにおける失効リスト・チェックを無効にするレジストリ |
NoCertRevocationCheckの値を新規に作成し、値を1にセットすると、失効リスト・チェックが無効になる。
この状態でVPNのプロトコルをSSTPにしてVPN接続を行ってみる。すると次のように、接続が成功していることが分かるだろう。SSTPではTCPの443番(HTTPSの標準ポート)しか使わないため、どのようなネットワーク環境でも利用できる可能性が高い。ただし、利用できるクライアントはWindows Vista/Windows Server 2008以降のWindows OSに限られる。
IPアドレスでの接続
なお、SSTPやIKEv2で接続する場合、接続先のVPNサーバ名ではなく、IPアドレスで接続しようとすると、次のようなエラーになる。接続先の証明書にはFQDN名が記述されているので、名前が一致しなくなるからだ。これらのVPNプロトコルを利用する場合は必ず名前を指定する必要がある。
VPN接続のエラー例(3):名前の不一致
証明書の名前とクライアントから接続するときの名前が異なると、このように不一致のエラーとなる。
(1)FQDN名ではなく、このIPアドレスを接続先にしてSSTP接続してみた。
(2)名前の不一致によるエラー。
またサーバ名を途中で変更したりすると、VPN用ポートにバインドされている証明書との整合性がなくなるので、やはりエラーとなる。そのような場合は証明書などの再設定が必要になる。具体的な方法や、SSTPに関するトラブルシューティングなどについては、以下のサポート技術情報なども参照していただきたい。
[補足]L2TPプロトコルを使ったVPN接続について
今回の検証例ではL2TP/IPsecプロトコルについては取り上げていない。VPNのプロトコルをL2TPにして強制的に接続しようとすると、「エラー 776: 証明書が見つかりませんでした。IPSec 上で L2TP プロトコルを使う環境では、コンピューター証明書をインストールする必要があります。」というエラーになる。本来ならば、正しい証明書を作成して設定を行う必要があるが、簡単にL2TP接続を実現する方法して、「事前共有キー」を使う方法がある。これは証明書を使わず、お互いにあらかじめ決めておいたキー文字列を設定するという方法である。この方法は、セキュリティ的にはあまり望ましくないが、とりあえず実験する程度ならば十分利用できる。
RRASサーバ側では、[ルーティングとリモート アクセス]の[プロパティ]画面で[セキュリティ]タブを選択し、[カスタム IPsec ポリシーを L2TP 接続に許可する]のチェック・ボックスをオンにする。そして[事前共有キー]にキー文字列を指定する。
クライアント側では、接続のプロパティ画面で[セキュリティ]タブを選択し、L2TPプロトコルの[詳細設定]で、[認証に事前共有キーを使う]を選択する。[キー]にはサーバ側と同じキー文字列を指定する。
今回は、Windows Server 2008 R2を使って実際にVPNサーバを構築する方法を紹介した。リモート作業を実現する方法としては、今回解説した以外にもWindows 7/Windows Server 2008 R2のDirectAccessもあるし(DirectAccessやL2TPなどは今後別記事で解説予定)、リモート・デスクトップのようなデスクトップ仮想化ソフトウェアをインターネットのゲートウェイ・サービスを介して使う方法もある(次のTIPS記事や、記事中のリンク参照)。もちろんWindows OSではなく、VPNアプライアンス製品を利用してVPN環境を構築する方法もある。用途や管理者のスキルなどに応じて最適なものを選んで導入していただきたい。
Copyright© Digital Advantage Corp. All Rights Reserved.