Azure
SSL
PowerShell
ApplicationGateway

【Azure】PowerShellでSSL証明書をApplicationGatewayにアップロードするまで

前提

  • 作業PCにPowershellインストール済み
  • 対象AzurePortalにログイン済み
  • SSL証明(pfx)を作成済み

最終的にうまくいったPowershellはこちら(上から順番に実施!)

①PasswordをSystem.Security.SecureString型に変換し変数に入れる

$pass = ConvertTo-SecureString "<任意のパスワード>" -AsPlainText -Force

例)$pass = ConvertTo-SecureString "SSLpassword123!" -AsPlainText -Force

②Application Gateway名をMicrosoft.Azure.Commands.Network.Models.PSApplicationGateway型に変換し変数に入れる

$AppGW = Get-AzureRmApplicationGateway -Name "<アプリケーションゲートウェイ名>" -ResourceGroupName "<アプリケーションゲートウェイのあるリソースグループ名>"

例)$AppGW = Get-AzureRmApplicationGateway -Name "AppGateway" -ResourceGroupName "Azure-Test"

③証明書をアップロードする

$Add-AzureRmApplicationGatewaySslCertificate -ApplicationGateway ②の変数名 -Name "<Portal上で表示されるSSL証明書名>" -Password ①の変数名 -CertificateFile <SSL証明書(拡張子がpfxのもの)のファイルパス(ローカルPC)>

例)$Add-AzureRmApplicationGatewaySslCertificate -ApplicationGateway $AppGW -Name "HWS_Certificate2" -Password $pass -CertificateFile C:\Users\takahashi\Desktop\files\01.SSL\TEST_Certificate.pfx


作業時のエラー

①実行時のエラー("System.String" 型から "System.Security.SecureString" 型に変換できません。)

$Add-AzureRmApplicationGatewaySslCertificate -Name AppGateway -CertificateName TEST_Certificate2 -Password SSLpassword123! -CertificateFile C:\Users\takahashi\Desktop\files\01.SSL\TEST_Certificate.pfx

Add-AzureRmApplicationGatewaySslCertificate : パラメーター 'Password' をバインドできません。"SSLpassword123!" の値を "System.String" 型から"System.Security.SecureString" 型に変換できません。
発生場所 行:1 文字:110
+ ... eway -CertificateName TEST_Certificate -Password SSLpassword123! -Certif ...
+                                                      ~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Add-AzureRmAppl...ySslCertificate]、ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Azure.Commands.Network.AddAzureApplicationGatewaySslCertificateCommand

解決策

ConvertTo-SecureStringコマンドで平文のパスワードを変換する

②実行時のエラー("System.String" 型から "Microsoft.Azure.Commands.Network.Models.PSApplicationGateway" 型に変換できません。)

$Add-AzureRmApplicationGatewaySslCertificate -ApplicationGateway "AppGateway" -Name "TEST_Certificate" -Password $pass -CertificateFile C:\Users\takahashi\Desktop\files\01.SSL\TEST_Certificate.pfx

Add-AzureRmApplicationGatewaySslCertificate : パラメーター 'ApplicationGateway' をバインドできません。"AppGateway" の 値を "System.String" 型から "Microsoft.Azure.Commands.Network.Models.PSApplicationGateway" 型に変換できません。
発生場所 行:1 文字:65
+ ... ionGatewaySslCertificate -ApplicationGateway "AppGateway" -Name " ...
+                                                  ~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Add-AzureRmAppl...ySslCertificate]、ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Azure.Commands.Network.AddAzureApplicationGatewaySslCertificateCommand

解決策

ApplicationGateway名をPowershellで取得し変数に格納する

参考URL