Azure管理証明書(PFXファイル)を利用してPowerShellからAzureを管理する

PFXファイルを利用して、PowerShellからAzureを管理する方法を書きます。


PFXファイルの作成

まず、事前にWindows SDKをインストールしておく必要があります。
http://msdn.microsoft.com/ja-jp/windows/desktop/bg162891.aspx


手元の環境だとデフォルトで以下にインストールされます。

C:\Program Files\Windows Kits\8.1\bin\x86

このSDKの中のmakecertというコマンドを利用しPFXファイルを作成します。

「-n」の値は適当なものに変更してくだい。

makecert -n "CN=yomon8.net" -pe -ss My -a sha256  -r -sky exchange

f:id:yomon8:20150109134958p:plain

MakeCertの引数の意味が知りたいかたはこちらに記載があります。
http://msdn.microsoft.com/ja-jp/library/bfsktky3%28v=vs.110%29.aspx


makecertコマンドが正常に完了したら、コマンドプロンプトなどからcertmgr.mscを実行します。
個人の証明書のところに作成した証明書が表示されていると思います。
f:id:yomon8:20150109135017p:plain


この証明書を右クリック>全てのタスク>エクスポートを選択します。ここで秘密キーをエクスポートするとPFXファイル、秘密キーをエクスポートしないとCERファイルが作成されます。
f:id:yomon8:20150109135034p:plain

Azure管理証明書としてアップロード

上記でエクスポートしたCERファイルはAzureポータルから「設定」>「管理証明書」>「アップロード」でアップロードします。
f:id:yomon8:20150109135052p:plain


対になっているPFXはサーバーなどにインストールして利用します。



PowerShellからPFXファイルを使ってAzure管理

上記の操作を行ったマシンからPowerShellでAzureの管理したい場合は、既に上記の操作で証明書が個人の証明書としてインストール済みなのでこれを利用します。

#証明書の取得
$certThumbprint = "87EFEC5FDD053154B7B9C32BFF3EA9C93166939A"
$cert = Get-ChildItem Cert:\CurrentUser\My\$certThumbprint

#Azureに接続
$subscriptionName = "サブスクリプション名"
$subscriptionId = "サブスクリプションのID"
Set-AzureSubscription -SubscriptionName $subscriptionName  -SubscriptionId $subscriptionId -Certificate $cert
Select-AzureSubscription -SubscriptionName $subscriptionName

#Azureコマンドレットが使えるはずです
Get-AzureVM

PFXを作成したマシン以外でPFXを利用する場合

証明書を作成したマシン以外でPFXファイルを使う場合。PFXファイルをダブルクリックすると証明書をインポートできます。または、以下のスクリプトを利用してPFXファイルを証明書ストアにインストールしてから利用します。

$pfxfile = "C:\cert\azure\yomon8.net.pfx"
$pfxpassword = "p@ssword"
$certStore = "Cert:\CurrentUser\My"

$secpass = ConvertTo-SecureString -String $pfxpassword -Force –AsPlainText
Import-PfxCertificate -FilePath $pfxfile -Password $secpass -CertStoreLocation $certStore