PowerCLI の vSphere Automation API SDK モジュールで vCenter Server のマシン SSL 証明書を更新する

Share on:

Table of contents

概要

以前の記事で REST API を使って vCenter Server のマシン SSL 証明書を置き換えていましたが、先日の PowerCLI 12.4 のリリースで PowerCLI のコマンドレットが追加されました。

PowerCLI 12.4 – What’s New

The new vSphere Management Module A new module is introduced for vSphere Management. It is a PowerShell-based module backed by the newly introduced vSphere Automation API SDK modules. … Currently, the module contains 6 cmdlets to complement certificate management. Explore the cmdlet documentation to know more.

  • Add-VITrustedCertificate
  • Get-VIMachineCertificate
  • Get-VITrustedCertificate
  • New-VIMachineCertificateSigningRequest
  • Remove-VITrustedCertificate
  • Set-VIMachineCertificate

PowerCLI のリファレンスを見ると Set-VIMachineCertificate コマンドレットによりカスタム証明書でマシン SSL 証明書を置き換えることが出来るようです。

VMCA 署名付き証明書でのマシン SSL 証明書の更新を行うためのコマンドレットは実装されていないようでしたが、REST API を叩くための関数(Invoke-*)は既に実装されているようだったので、これを試してみたいと思います。

vSphere Automation SDK for PowerShell について

PowerCLI 12.4 では以下の3つのモジュールが追加されており、このうち VMware.Sdk.VSphere.* が vSphere Automation API を PowerShell から叩くためのローレベルな関数が含まれるモジュールで、VMware.PowerCLI.VCenter.* はそれらのラッパーのコマンドレットが含まれるモジュールのようです。

In VMware PowerCLI 12.4.0, the following modules have been added:

  • VMware.Sdk.VSphere.*: Provide functionality for the vSphere Automation SDK for PowerShell.
  • VMware.PowerCLI.VCenter.*: Provide PowerShell-based cmdlets for automated administration of the vSphere environment.
  • VMware.PowerCLI.Sdk.*: Provide help functionalities for the PowerShell-based cmdlets. These modules have no cmdlets but are required for other modules to function correctly.

今回の VMCA 署名付き証明書でのマシン SSL 証明書の更新はコマンドレットが未実装のようなので、後者のモジュールに含まれる PowerShell 関数を使っていきます。

どのモジュールのどの関数を使うのか?

モジュールのディレクトリ構成を見ると VMware.Sdk.vSphere.vCenter.CertManagement に証明書管理に関する vSphere Automation API の PowerShell 関数が含まれており、その中の TlsApi.ps1 に Invoke-RenewTls 関数がありました。

以下は Get-Help で確認できるヘルプですが、必須のオプションは特になさそうですのでそのまま使ってみます。

 1> Get-Help Invoke-RenewTls -Full
 2
 3NAME
 4    Invoke-RenewTls
 5    
 6SYNOPSIS
 7    Renews the TLS certificate for the given duration period.  After this operation completes, the services using the certificate will be restarted for the new certificate to take effect.  if you do not have all of the privileges described as follows:     -  Operation execution requires CertificateManagement.Administer.
 8    
 9    
10SYNTAX
11    Invoke-RenewTls [[-CertificateManagementVcenterTlsRenewRequestBody] <PSObject>] [-Server <Object>] [-WithHttpInfo] [-WhatIf] [-Confirm] [<CommonParameters>]
12    
13    
14DESCRIPTION
15    No description available.
16    
17
18PARAMETERS
19    -CertificateManagementVcenterTlsRenewRequestBody <PSObject>
20        No description available.
21        
22        Required?                    false
23        Position?                    1
24        Default value                
25        Accept pipeline input?       true (ByValue, ByPropertyName)
26        Accept wildcard characters?  false
27        
28    -Server <Object>
29        
30        Required?                    false
31        Position?                    named
32        Default value                
33        Accept pipeline input?       false
34        Accept wildcard characters?  false
35        
36    -WithHttpInfo [<SwitchParameter>]
37        A switch when turned on will return a hash table of Response, StatusCode and Headers instead of just the Response
38        
39        Required?                    false
40        Position?                    named
41        Default value                False
42        Accept pipeline input?       false
43        Accept wildcard characters?  false
44        
45    -WhatIf [<SwitchParameter>]
46        
47        Required?                    false
48        Position?                    named
49        Default value                
50        Accept pipeline input?       false
51        Accept wildcard characters?  false
52        
53    -Confirm [<SwitchParameter>]
54        
55        Required?                    false
56        Position?                    named
57        Default value                
58        Accept pipeline input?       false
59        Accept wildcard characters?  false
60        
61    <CommonParameters>
62        This cmdlet supports the common parameters: Verbose, Debug,
63        ErrorAction, ErrorVariable, WarningAction, WarningVariable,
64        OutBuffer, PipelineVariable, and OutVariable. For more information, see
65        about_CommonParameters (https://go.microsoft.com/fwlink/?LinkID=113216). 
66    
67INPUTS
68    
69OUTPUTS
70    None
71    
72    
73    
74RELATED LINKS
75    Online Version: https://developer.vmware.com/docs/vsphere-automation/latest/vcenter/api/vcenter/certificate-management/vcenter/tlsactionrenew/post/ 

Invoke-RenewTls で証明書を更新してみる

やることは単純で、Connect-VIServer で vCenter Server に接続後、Invoke-RenewTls を実行するだけです。

 1> Connect-VIServer vcsa.api.lab
 2
 3Specify Credential
 4Please specify server credential
 5User: administrator@vsphere.local
 6Password for user administrator@vsphere.local: ********
 7
 8
 9Name                           Port  User
10----                           ----  ----
11vcsa.api.lab                   443   VSPHERE.LOCAL\Administrator
12
13> Invoke-RenewTls

これを実行すると vCenter Server のサービスが再起動されるので、サービスが起動するまでしばらく待ちます。サービスが起動すればマシン SSL 証明書の更新は完了です。

おわりに

今回の記事は PowerCLI 12.4 で追加された vSphere Automation API の PowerShell モジュールを使って vCenter Server のマシン SSL 証明書を更新してみました。

PowerCLI 12.4 の時点では当該モジュールを使ったコマンドレットは6個だけですが、おそらく追加のコマンドレットも今後どんどん実装されていくと思いますので期待したいところですね。