HOWTO · PowerShell

PowerShell を使用して PFX 証明書をインストールする

この記事では、PFX 証明書と、PowerShell を使用してそれらをローカルおよびリモート マシンにインポートする方法について説明します。

Microsoft Windows オペレーティング ベースのマシンは、外国証券に対応する複数の種類の証明書を受け入れ、そのカーネルで機能します。 一例として、Personal Exchange Format または PFX 証明書があり、主に認証に使用されます。

この記事では、PFX 証明書と、PowerShell を使用してそれらをローカルおよびリモート マシンにインポートする方法について説明します。

PFX 証明書の概要

PKCS#12 (Public Key Cryptography Standards) 形式の証明書は、PFX ファイルで表されます。 これには、証明書、その有効性に必要な中間機関証明書、および証明書の秘密鍵が含まれます。

これは、証明書の展開に必要なすべての情報を含むアーカイブと考えてください。

主に公開キー基盤または PKI クライアントと呼ばれる私たちのマシンは、これらの種類の証明書をインポートできます。この記事の次のセクションで、PowerShell を使用してそれを行う方法を示します。

PowerShell を使用して PFX 証明書をインポートする

PFX 証明書の PKI クライアントへのインポートを開始するには、いくつかの前提条件に従って、必要なモジュールとコマンドをマシンで適切に使用できるようにする必要があります。

  1. Windows オペレーティング システムのビルド番号 9600 以降

    • ワークステーション: Windows 8.1 以降
    • サーバー: Windows Server 2012 R2 以降
  2. PowerShell バージョン 4 以降

上記の要件を満たしている場合は、ライブラリにコマンド Import-PfxCertificate コマンドレットがあり、すぐに使用できるはずです。 以下のコードで確認してください。

コード例:

Get-Command Import-PfxCertificate

出力:

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Import-PfxCertificate                              1.0.0.0    PKI

コマンドの出力でエラーが発生することはありません。 したがって、証明書のインポートの自動化を進めることはできません。

Import-PfxCertificate は、以前に Source 列で検証された PKI モジュールの一部です。

この記事では、Import-PfxCertificate コマンドに注目しますが、PKI スイート全体に関心がある場合は、以下のコマンドを実行して詳細を確認できます。

Get-Command -Module PKI

これで、スクリプトに次の値を指定して、PFX 証明書をインポートできます。

  1. 証明書のソース パス
  2. 宛先証明書または証明書ストア
  3. 安全な文字列オブジェクトに変換するパスワード キー

以下のコード スニペットを実行し、シナリオに慣れているパラメーター値を編集します。

Import-PfxCertificate FilePath C:\Certs\test.pfx cert:\local\my -Password (ConvertTo-SecureString -String "secret" -Force AsPlainText)

リモート マシンに PFX 証明書をインポートする

Invoke-Command コマンドレットを追加することで、マシンにログインせずに証明書をリモートでインポートするように、以前のコード スニペットを改善できます。 次に、唯一の要件は、-ComputerName パラメーターにリモート コンピューターまたはサーバーのホスト名を入力することです。

その後、前のコマンドを -ScriptBlock パラメーターの値として中かっこで囲みます。

Invoke-command -ComputerName remote01 -ScriptBlock
{
    Import-PfxCertificate FilePath C:\Certs\test.pfx cert:\local\my -Password (ConvertTo-SecureString -String "secret" -Force AsPlainText)
}