Microsoft 365 (Entra ID/Azure AD) 上にアプリケーション (Enterprise Application/App Registration) を作成し、アプリケーション権限 (App-Only) で認証する際、証明書認証 を利用することが推奨されます。
以下では、Windows の PowerShell を使用して自己署名証明書を作成し、アプリ登録に必要な .cer (公開鍵) と .pfx (秘密鍵付き) をエクスポートする一連の手順を解説します
新しい自己署名証明書を作成する
Windows 10 以降や Windows Server 2016 以降の環境では、PowerShell に組み込みの New-SelfSignedCertificate
コマンドレットが利用できます。最低限のパラメーターで自己署名証明書を作成するには、以下のように実行します。
# 1) 証明書を発行
$cert = New-SelfSignedCertificate `
-Subject "CN=MyAppCert" `
-CertStoreLocation "cert:\CurrentUser\My" `
-KeyExportPolicy Exportable `
-KeyAlgorithm RSA `
-KeyLength 2048 `
-FriendlyName "MyAppCert for Microsoft 365 App"
Write-Host "作成された証明書の Thumbprint: $($cert.Thumbprint)"
- -Subject: 証明書のサブジェクト名(例: CN=MyAppCert)。
- -CertStoreLocation: 作成先の証明書ストア (User でも Machine でも良いですが、一般的には
CurrentUser\My
)。 - -KeyExportPolicy Exportable: 秘密鍵をエクスポート可能にするために必要。
- -KeyAlgorithm / -KeyLength: アルゴリズムや鍵長を指定 (RSA 2048 など)。
- -FriendlyName: 管理しやすい名前を付けておくと、後で探しやすい。
実行画面

有効期限の指定
デフォルトでは 1 年有効の自己署名証明書が作成されます。必要に応じて -NotAfter (Get-Date).AddYears(2)
のように指定して、2年有効の証明書を作ることも可能です。
$cert = New-SelfSignedCertificate `
-Subject "CN=MyAppCert" `
-CertStoreLocation "cert:\CurrentUser\My" `
-KeyExportPolicy Exportable `
-KeyAlgorithm RSA `
-KeyLength 2048 `
-NotAfter (Get-Date).AddYears(2) `
-FriendlyName "MyAppCert for Microsoft 365 App"
実行画面

確認
MMC から証明書スナップインを追加して [現在のユーザー] > [個人] ストアを確認すると、有効期限を2年間に指定した先ほどの証明書がインポートされていることを確認できます。

証明書をエクスポートする
秘密鍵を含む .pfx (PFX) ファイルのエクスポート
アプリケーションなどでプログラム的に認証するときは、秘密鍵 を含む PFX が必要です。以下の例では、パスワードつきで PFX にエクスポートします。
※実際の運用環境では、パスワードはハードコードせず、環境変数やセキュアストア等で安全に管理しましょう。
# 2) パスワードを安全に SecureString として保持
$pfxPassword = ConvertTo-SecureString -String "P@ssw0rd!" -Force -AsPlainText
# 3) PFX エクスポート
Export-PfxCertificate `
-Cert $cert.PSPath `
-FilePath "C:\Temp\MyAppCert.pfx" `
-Password $pfxPassword
Write-Host "PFX ファイルをエクスポートしました: C:\Temp\MyAppCert.pfx"
公開鍵のみの .cer (CER) ファイルのエクスポート
Entra ID (Azure AD) の アプリ登録 に証明書をアップロードする際は、公開鍵部分 (.cer) のみをアップロードします。以下のコマンドで .cer ファイルを取得できます。
Export-Certificate `
-Cert $cert.PSPath `
-FilePath "C:\Temp\MyAppCert.cer"
Write-Host "CER ファイルをエクスポートしました: C:\Temp\MyAppCert.cer"
Entra ID (Azure AD) アプリ登録に証明書をアップロードする
次に、Microsoft Entra ID (Azure AD) 側で アプリ登録 を行い、そのアプリに対して先ほど作成した公開鍵 (.cer
) を登録します。
- Entra ID (Azure AD) ポータル に管理者アカウントでサインイン。
- 左メニューから「アプリの登録 (App registrations)」を選択し、該当のアプリを開く。
- 「証明書とシークレット (Certificates & secrets)」を開く。
- 「証明書をアップロード (Upload certificate)」で
MyAppCert.cer
をアップロード。
アップロード完了後、アプリ登録の「概要」に表示される アプリケーション (client) ID と テナント (tenant) ID、そして PFX ファイルのパスとパスワードを使って認証フローが実行できるようになります。
認証フローに組み込む (例: Microsoft Graph PowerShell)
作成した証明書を使用してアプリケーション権限で Microsoft Graph にアクセスする例を示します。
Microsoft Graph PowerShell Module を利用すると簡単です。
# 1) Microsoft Graph PowerShell Module が未インストールの場合
# Install-Module Microsoft.Graph -Scope CurrentUser
$TenantId = "<Your Tenant ID>"
$AppId = "<Your App (client) ID>"
$CertPath = "C:\Temp\MyAppCert.pfx"
$CertPwd = ConvertTo-SecureString -String "P@ssw0rd!" -Force -AsPlainText
Connect-MgGraph `
-ClientId $AppId `
-TenantId $TenantId `
-Certificate (New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPwd)) `
-Scopes "https://graph.microsoft.com/.default"
# ログイン成功後、Graph API を操作できます
Get-MgUser -Top 5
ここでは、-Scopes "https://graph.microsoft.com/.default"
を指定することでアプリに付与されたすべての権限が利用されます。実際にはポータルで付与した権限に応じて操作が制限されます。
まとめ
- PowerShell の
New-SelfSignedCertificate
コマンドレットを使用して、自己署名証明書を簡単に作成できる。 - 秘密鍵入りの PFX ファイルと、公開鍵のみの CER ファイルをエクスポートし、アプリケーション登録にアップロードする。
- Microsoft 365 (Entra ID/Azure AD) で アプリ登録 に公開鍵 (CER) を設定することで、証明書ベースのアプリ権限による認証が可能となる。
- セキュアなパスワード管理やキー管理システムの活用、運用ポリシーの整備もあわせて行い、より安全なアプリ連携を実現する。
このように、パスワードベースのアプリ認証よりも安全性の高い 証明書認証 を導入することで、運用負荷を下げつつ不正アクセスや資格情報漏えいのリスクを減らすことができます。ぜひご活用ください。
コメント