Windows Server 2008 R2 SSTP の設定

設定にあたっては、以下のサイトがとてもわかりやすいです。
http://www.letstryit.net/computer/cat4/sstp/

上記のサイトを参考に、手順を進めていきます。

そうすると、CA証明書を作成する際に、CNはどうしたら良いのかと、不安になります。
答えは簡単!「オレオレ証明書」で運用するなら何も考えなくて良いです。
つまり、

 
CN = hogehoge-CA
DC = hogehoge
DC = local

で、問題なく動作します。hogehoge.net などにしなくても良いです。

続いて、サーバ認証証明書を作成します。
そうすると、(私の場合)「この CA への要求を作成し送信する。」なんて表示されないじゃないかとつまずきます。
どうやら、メジャーアップデートだからという理由で、「IE11」にバージョンアップすると、表示されないことがあるようです。
「IE11」へのバージョンアップをアンインストールし、「IE8」に戻すと、表示されるようになります。

追記
(2008R2から2016に移行してしまったので、正確な確認はできていませんが m- -m;)「IE11 セキュリティ強化の構成」が有効なため、表示されないようです。
サーバーマネージャー>ローカルサーバ>IE11 セキュリティ強化の構成 のあたりから、無効にしてやると、たぶん表示されます。

サーバ認証証明書が作成できたら、正しいストアに再配置しましょう。

また、冒頭のサイトでは、

用途が「すべて」あるいは「サーバ証明書」となっている他の証明書が、同じ証明書ストアにないかどうかも確認する。画面の例では、CA証明書が一緒に存在しており、これは用途が「すべて」なので該当する。用途が重複する証明書が複数あるとSSTPが動作しないため、不要な証明書は削除する。

と書かれていますが、削除する必要はありません。
特に、CA証明書は、何回削除しても、サーバを再起動すると復活してきます。

CA証明書とサーバ認証証明書が作成できたら、クライアントへ証明書をインストールします。
この際、サーバ認証証明書をクライアントにインストールする必要はありません。
ポイントは、

インポートする先の証明書ストアに注意する必要がある。SSTPを正しく機能させるには、クライアント側でもサーバ側と同様に、CA証明書を[証明書(ローカルコンピュータ)]-[信頼されたルート証明機関]-[証明書]に置く必要がある

ということです。
必ず、ユーザではなくローカルコンピュータの信頼されたルート証明機関のストアにCA証明書を格納してください。
クライアントへの証明書のインストールを間違えていると、以下のエラーがでます。

エラー 0X800B0109:証明書チェーンは処理されましたが、信頼プロバイダーが信頼していないルート証明書で強制終了しました。

なお、サーバ認証証明書を作成する際は、CNを実際に使用する接続先名と一致させる必要があります。接続先が”hogehoge.net”なら、”hogehoge.net”をCNにしなければなりません。
一致していない場合は、以下のエラーが表示されます。

エラー 0x800B010F:証明書のCN名が渡された値と一致しません。

ここから先、私がつまずいた最大のポイントです。
「ネットワークポリシーとアクセスサービス」の役割もインストールした。
待ち受け設定はOKなはずだ! でも、動かない!!!
そもそも、上記のエラーすら表示されない。

以下、いろいろはまったエラーです。

エラー 800:VPNトンネルの試行に失敗したため、リモート接続を確立できませんでした。VPNサーバに到達できない可能性があります。この接続がL2TP/IPsecトンネルを使用しようとしている場合、IPsecネゴシエーションに必要なセキュリティパラメータが正しく構成されていない可能性があります。

これは、VPNの種類をSSTPに限定していないため、SSTP,PPTP,L2TPなどを順番に試行した結果、見当外れなエラーメッセージが表示されています。
VPN接続のプロパティ(クライアント側)で、VPNの種類をSSTPに限定しましょう。

エラー 0x80072746:既存の接続はリモートホストに強制的に切断されました。

あまりにもザックリとしたエラーメッセージで原因の検討がつかず、二日ほど悩みました。
このエラーは、私の推測では、サーバ側が自身の証明書を正しく読み込めていないため、待ち受けの用意ができていないことに起因するようです。

実は、CA証明書やサーバ認証証明書を作成し、正しいストアへ配置しただけでは、まだ設定が終わっていないのです。

サーバマネージャで、「ネットワークポリシーとアクセスサービス」>「ルーティングとリモートアクセス」を右クリック、「プロパティ」を選び、「セキュリティ」タブを開く。
そうすると、一番下に、証明書を選ぶところがあるじゃないか!!
これが、上記で「重複する証明書」を削除する必要のないと書いた理由です。

接続先名と一致するCNの証明書を選択して、再起動しましょう。

エラー 0x80092013:失効サーバーがオフラインのため、失効の関数は失効を確認できませんでした。

「オレオレ証明書」の場合、失効サーバなど用意していないわけで、「失効確認できませんでした。だからつなぐの諦めました」というエラーです。
失効サーバまでキチンと用意するなら頑張ってください。

クライアント側のレジストリをいじることにより、失効確認を行わないようにできます。

NoCertRevocationCheck
http://support.microsoft.com/kb/947054/ja

 
レジストリ サブキー:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Sstpsvc\Parameters
レジストリ エントリ:NoCertRevocationCheck
データ型:REG_DWORD
このレジストリ エントリを有効にするか、VPN クライアントは、SSL ネゴシエーション フェーズ中に実行される SSL 証明書の失効チェックを無効にするを使用できます。値を 0 に設定されている場合、証明書失効チェックは実行されます。場合は、値が 1 に設定して、証明書失効チェックはスキップされます。デバッグのためだけの 1 にこの値を設定する必要があることに注意してください。1、実稼働環境にこの値を設定できません。既定では、証明書失効チェックが実行されます。

ここまで対応すれば、きっとケンシロウも
「お前はもう、つながっている」
と言ってくれるはずだ!

追記
こちらのサイトも、すごく参考になるので、ご紹介。
メモ的な思考的な
http://thinkami.hatenablog.com/archive/category/VPN

スポンサーリンク(広告)
スポンサーリンク(広告)