Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

ARMモードでのPoint to Site VPN接続ではまった

少しばかりハマったので備忘メモなのですが、これは2016/02/19 時点での情報です。数週間前の情報が既に古くなってしまうAzureの宿命でしょう。

Azure ARM PowerShellのバージョンは、1.0.4 です(Get-Moduleによる)

前提として、

  • 現在のNewポータルでは、P2Sを構成できないので、PowerShellでの操作が必要
  • そのためには証明書を作成しUploadする必要がある。
  • 既存のVPNゲートウェイは作成済み

ですぐにポータルで操作可能になるようなキがします。

チュートリアル的には以下のドキュメントです(分かり難いのですが) azure.microsoft.com

そして、はまりどころな話としては、おおよそ以下と同じです。既に一部コマンドで引数が古くなってたりしますが。

ARM環境で P2S VPN を構築する – MSKK Cloud OS Tech Blog

結局は、makecertで作成した証明書をBASE64形式でエクスポートしておく必要がありますというのと

Add-AzureRmVpnClientRootCertificate

で例示されているサンプル

$Text = Get-Content -Path "C:\Azure\Certificates\ExportedCertficate.cer"
$CertificateText = for ($i=1; $i -lt $Text.Length -1 ; $i++){$Text[$i]}

では改行が入ってしまって、うまく動きませんという話です。

いちいち、BASE64形式で再エクスポートするのは面倒なので、

[Convert]::ToBase64String([System.IO.File]::ReadAllBytes($cerfilename))

とかで直接BASE64化しても問題ないと思います。

$base64 = [Convert]::ToBase64String([System.IO.File]::ReadAllBytes($cerfilename))

Add-AzureRmVpnClientRootCertificate `
  -ResourceGroupName some-resource-group `
  -VirtualNetworkGatewayName some-gw-name `
  -VpnClientRootCertificateName "RootCertificate" `
  -PublicCertData $base64

削除は、

$cer = Get-AzureRmVpnClientRootCertificate `
  -ResourceGroupName some-resource-group `
  -VirtualNetworkGatewayName some-gw-name `
  -VpnClientRootCertificateName "RootCertificate"

Remove-AzureRmVpnClientRootCertificate `
  -ResourceGroupName some-resource-group `
  -VirtualNetworkGatewayName some-gw-name `
  -VpnClientRootCertificateName "RootCertificate" -PublicCertData $cert.PublicCertData 

以上