2017年6月23日金曜日

Azureポイント対サイトVPN用証明書のハッシュ関数

Microsoft Azureでは「ポイント対サイトVPN」を構成することで、特定のPCからAzureの仮想ネットワークにVPN接続を行うことができます。

この時使われるのが「SSTP (Secure Socket Tunneling Protocol)」で、HTTPSを使った接続を行います。

Microsoft AzureによるITインフラの拡張」では、ポイント対サイトVPNを構成する演習を行いますが、先日接続ができませんでした。

どうやら、使った証明書に問題があったようです。

演習で使う証明書は、ハッシュ関数としてSHA-1を使っています。しかし、SHA-1は理論的な脆弱性が指摘されていました。2017年2月には実際の攻撃実験も成功しています。

しかし、演習ではセキュリティリスクのあるSHA-1を使い続けていました。演習で使う仮想マシンや仮想ネットワークはその日中に削除しますし、仮想マシンにはサンプルのWebサイトしか存在しないため、問題にはならないと考えていたからです。

しかし、Azure側がSHA-1の受け入れを停止したようです。

この問題を解決するには、SHA-2などSHA-1よりも強力なハッシュ関数を使って証明書の再作成を行います。

テキストでは、マイクロソフトがWindows SDKとともに配布しているmakecert.exeを使った例を紹介してます。そこで指定している「sha1」というパラメーターを「sha256」に変更してください。

【自己署名ルート証明書】
makecert -sky exchange -r -n "CN=G20K-Root" -pe -a sha256 -len 2048 -ss My "C:\G20K-Root.cer"

【クライアント証明書】
makecert -n "CN=G20K-Client" -pe -sky exchange -m 96 -ss My -in "G20K-Root" -is my -a sha256

自己署名証明書は、PowerShellの「New-SelfSignedCertificate」でも構成できます。こちらの方が少し複雑なように見えますが、Windows SDKのインストールが不要なので、むしろ簡単かもしれません。

詳しくは「PowerShell を使用したポイント対サイト接続の証明書の生成とエクスポート」をお読みください。