【PowerShell】証明書移行|拇印の確認から certutil でのバックアップ・復元まで

  • URLをコピーしました!
目次

はじめに

Windows で自分の証明書をエクスポートしようとした時、こんな手順を踏んでいませんか?

  1. 「インターネットオプション」を開く
  2. 「コンテンツ」タブをクリック
  3. 「証明書」ボタンをクリック
  4. ウィザードに従ってポチポチ…

正直、手順が多くて面倒ですよね。しかも、Windows Server Core のような GUI(画面)がない環境や、数十台の PC に証明書を一括配布したい場合、マウス操作では限界があります。

そこで今回は、PowerShell と Windows 標準コマンド(certutil)を使って、証明書の確認・エクスポート・インポートをコマンドラインだけで完結させる方法 を紹介します。

この記事でわかること
  • 確認: PowerShell で証明書の「拇印」を一発検索
  • 保存: certutil でパスワード付きバックアップ(PFX)作成
  • 復元: コマンド1行で証明書をインポート

エクスポート / インポート手順

STEP

対象の証明書を見つける(PowerShell)

証明書を操作するには、その証明書を一意に特定する ID である 「拇印(Thumbprint)」 が必要です。名前(Subject)は重複することがあるため、必ずこの拇印を使います。

PowerShell を起動し、以下のコマンドを実行して、現在のユーザーの「個人」ストアにある証明書一覧を表示します。

Get-ChildItem -path Cert:\CurrentUser\My

▼ 実行結果の例

PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My

Thumbprint                                Subject
----------                                -------
B1E52CD8EA6CDB32A120CF48553C6DXXXXXXXXXX  CN=User01

この Thumbprint の列に表示されている 約40桁の英数字 が拇印です。 エクスポートしたい証明書の拇印をコピーして控えておきましょう。

STEP

証明書をエクスポートする(バックアップ)

次に、特定した証明書をファイルとして書き出します。 ここでは、秘密鍵を含んだ 「PFX形式 (.pfx)」 でエクスポートします。これがあれば、別の PC に移行しても「本人」として証明書を利用できます。

コマンドプロンプト(または PowerShell)で以下のコマンドを実行します。

certutil -exportPFX -p "任意のパスワード" -user my "<拇印>" <保存ファイル名.pfx>

▼ コマンドの構成要素

  • -exportPFX: PFX 形式(秘密鍵付き)で出すという指定
  • -p "パスワード": インポート時に要求するパスワードを設定 ※必須
  • -user my: 「現在のユーザー」の「個人(my)ストア」を対象にする。
  • "<拇印>": Step 1 でコピーした ID を貼り付け。
  • <ファイル名>: 保存する名前(例: backup.pfx

▼ 実行例

certutil -exportPFX -p "Pass1234" -user my "B1E52CD8EA6CDB32A120CF48553C6DXXXXXXXXXX" backup.pfx

これで、カレントディレクトリに backup.pfx が作成されます。

STEP

証明書をインポートする(復元・配布)

最後に、作成されたファイルを別の PC に取り込む(インポート)手順です。 ファイルの形式(PFX か CER か)によってコマンドが少し異なるので注意してください。

① PFXファイル(秘密鍵付き)の場合

PC の移行やバックアップ復元などで使います。エクスポート時に設定したパスワードが必要です。

certutil -user -p "Pass1234" -importpfx backup.pfx
  • -importpfx: PFXファイルをインポートする指定。
  • ※これにより、証明書と秘密鍵が「個人」ストアに格納されます。

② CER ファイル(公開鍵のみ)の場合

相手に自分の公開鍵を渡す場合や、ルート証明書を配布する場合に使います。

certutil -user -addstore My certnew.cer
  • -addstore: ストアに追加する指定
  • My: 「個人」ストアを指定(信頼されたルート証明書なら Root を指定)

【補足】「ユーザー」ストアと「コンピューター」ストアの違い

Windows の証明書ストアには、大きく分けて 2 つの保管場所があります。 今回のコマンドでは -user オプションを付けて 「現在のユーザー(Current User)」 を操作しましたが、用途によっては使い分けが必要です。

ストアの種類オプション用途
現在のユーザー-user ありクライアントPC向け
VPN、メール署名、Web ブラウザ認証など、その人がログインしている時だけ使う証明書
ローカルコンピューター-user なしサーバー向け
IIS (Web サーバー)や RDP など、ユーザーがログオフしていてもシステムとして稼働するサービスの証明書

▼ サーバー(コンピューター)ストアに入れる場合

IIS の SSL 証明書などをインポートする場合は、-user を外して(管理者権限で)実行します。

certutil -p "Pass1234" -importpfx backup.pfx

-user を付けないと、自動的に「ローカルコンピューター(LocalMachine)」ストアが対象になります。

まとめ

本記事では、GUI を使わずにコマンドラインだけで証明書を管理する方法を紹介しました。

本記事のポイント
  • 検索: PowerShell の Get-ChildItem で「拇印」を特定する。
  • 保存: certutil -exportPFX でパスワードをかけてバックアップする。
  • 復元: certutil -importpfx で取り込む。

「インターネットオプション」を開いてポチポチは、1台なら苦になりませんが、台数が増えるとミスのもとです。コマンドなら 「Server Core 環境でも使える」「バッチファイルにして自動化できる」 というメリットがあります。

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

インフラ(クラウド/NW/仮想化)から Web 開発まで、技術領域を横断して活動するエンジニア💻 コンシューマー向けエンタメ事業での新規開発・運営経験を活かし、実戦的な技術ノウハウを発信中

[ Certs ] CCIE Lifetime Emeritus / VCAP-DCA ✒️ [ Life ] 技術書・ビジネス書愛好家📖 / 小・中学校で卓球コーチ👟

目次