Windowsで自己署名証明書を作成および管理する方法 – Real Insights
Windows PKI を少しでも扱ったことがある人ならMakeCert.exe、自己署名証明書を生成するための昔ながらのツールである について知っています。でも正直どうでしょう? 最近は PowerShell のNew-SelfSignedCertificateコマンドが主流になっています。より柔軟で、追加のダウンロードも不要で、SAN や SHA-256 などの最新のものをサポートしています。それでも、特にコマンドの実行や証明書ストアの取り扱いに慣れていない人にとっては、非常に直感的ではありません。そこで、自己署名証明書を作成、エクスポート、またはその他必要なものを取得するための実際の内訳を以下に示します。このガイドでは、実際の CA に多額の費用をかけずに、テスト用、社内サイト用、または単に楽しみのために証明書を作成する方法について説明します。さらに、その証明書をエクスポートして IIS にバインドする方法や、その過程で基本的な管理を行う方法についても学習します。ただし、セットアップによっては、アクセス許可を正しく取得したり、管理者特権の PowerShell が必要になったりすることがあります。それでは、実践的なステップ バイ ステップの説明を見ていきましょう。コマンドライン、メニューパス、そして初めて使うときはつまずくような内容がいくつかあることを想定してください。ただし、何回か試すと理解できるようになります。
PowerShell で自己署名証明書を作成する
適切なコマンドレットを使用する理由とその重要性
New-SelfSignedCertificate従来のツールよりもはるかに優れ ていますMakeCert.exe。まず、組み込みであること、そしてSAN、SHA-256、そしてより優れた鍵オプションをサポートしていることです。IIS、APIテスト、社内サービス用のテストSSLを作成する場合に最適です。すべてのオプションを確認するには、「powershell Get-Command -Module PKI」と入力すると、関連するコマンド(主にPKINew-SelfSignedCertificateモジュール内)がすべて表示されます。ただし、これは主に開発/テスト用であり、本番環境向けではないことに注意してください。デプロイする場合は、実際のCA発行の証明書を使用するのが最善の策です。
テストドメイン用のシンプルなSSL証明書を生成する方法
例えば、 test.contoso.com 用の証明書が必要だとします。コマンドは簡単で、以下のようになります: powershell New-SelfSignedCertificate -DnsName test.contoso.com -CertStoreLocation cert:\LocalMachine\My 。このコマンドを実行すると証明書が作成され、マシンの「My」(個人用)ストアに保存され、拇印とその他の情報が出力されます。その後、certlm.mscの「個人」セクションで確認できます。Windows はユーザーが確認しないと情報が表示されないようになっているためです。注意:PowerShell を管理者として実行していない場合、「アクセスが拒否されました」というエラーが表示される可能性があります。PowerShell を右クリックして「管理者として実行」する必要があるかもしれません。マシンによっては、この方法でもアクセス許可の設定が難しくなる場合があります。また、別の暗号化プロバイダーを指定する場合は、そのプロバイダーがインストールされていることを確認してください。インストールされていない場合は、プロバイダーエラーが発生します。
CNだけでなくSANや複数の名前を追加する
単純な証明書を作成するだけなら、大した問題ではありません。しかし、証明書に複数のDNS名やIPアドレスが必要な場合はどうすればいいでしょうか?パラメータは-DnsName配列を受け入れることができます。powershell New-SelfSignedCertificate -DnsName adfs1.contoso.com, web_gw.contoso.com, enterprise_reg.contoso.com -CertStoreLocation cert:\LocalMachine\My IPアドレスの場合は?DNS名のみを受け入れるので、こちらを使用します-TextExtension。powershell -DnsNameNew-SelfSignedCertificate -TextExtension @(“2.5.29.17={text}IPAddress=10.1.2.3, DNS=TESTServer1, DNS=TESTServer1.local”) ええ、ちょっと奇妙ですが、ちゃんと動作します。
インストールまたは共有のために自己署名証明書をエクスポートする
秘密鍵をPFX形式でエクスポートして他の場所にインポートする場合は、拇印が必要です。以下のコマンドで確認してください: powershell Get-ChildItem -Path “Cert:\LocalMachine\My” | Where-Object { $_. Thumbprint -eq “YOUR_THUMBPRINT” } 拇印はご自身の拇印に置き換えてください。エクスポートするには: powershell $CertPassword = ConvertTo-SecureString -String “YourPassword” -Force –AsPlainText Export-PfxCertificate -Cert cert:\LocalMachine\My\YOUR_THUMBPRINT -FilePath C:\temp\mycert.pfx -Password $CertPassword 公開鍵のみ(秘密鍵なし)の場合は、以下のコマンドを実行できます: powershell Export-Certificate -Cert cert:\LocalMachine\My\YOUR_THUMBPRINT -FilePath C:\temp\mycert.cer これで証明書ファイルが保存されます。そこからは、通常の手順に従います。 – GUI 経由でインストールするには、`.cer` をダブルクリックします。 – または、必要に応じて、証明書インポート ウィザードを使用して、信頼されたルート証明機関に配置します。 注: 秘密キーをエクスポートしたり、LocalMachine ストアに配置したりするには、管理者権限が必要です。
ルート CA と発行チェーンの作成 (オプションだが便利)
ルート CA 証明書を作成し、そこから従属証明書を生成できます。これは、内部テストや CA チェーンの作成に便利です。 例: powershell $rootCert = New-SelfSignedCertificate -Subject “CN=TestRootCA, O=MyOrg” -KeyExportPolicy Exportable -KeyUsage CertSign, CRLSign, DigitalSignature -KeyLength 2048 -HashAlgorithm “SHA256” -CertStoreLocation cert:\LocalMachine\My $intermediateCert = New-SelfSignedCertificate -Subject “CN=TestSubCA, O=MyOrg” -Signer $rootCert -CertStoreLocation cert:\LocalMachine\My ### 問題が発生した場合は、次の操作を行います。 – 管理者権限なしで実行していますか? アクセス拒否エラーが発生する可能性があります。 – 暗号プロバイダーに問題がありますか? 指定したプロバイダーが存在することを確認してください。 – 生成に時間がかかることがありますか? 単に VM が遅いかシステムがビジー状態であるだけである場合があります。
自己署名証明書を使用するように IIS を構成する方法
証明書を取得したら、インターネット インフォメーション サービス (IIS) マネージャー (`inetmgr.exe`) を開きます。サイトのバインド で HTTPS バインドを追加または編集し、新しい証明書を選択します。または、PowerShell を使用してバインドします。 powershell New-IISSiteBinding -Name “Default Web Site” -BindingInformation “*:443:” -CertificateThumbPrint “your_thumbprint” -CertStoreLocation “cert:\LocalMachine\My” -Protocol https *(注: このコマンドは IIS の設定によって異なりますが、一般的には、IIS 管理ツールの GUI またはスクリプトが使用されます。)* サムプリントで直接バインドする場合: powershell # サムプリントを証明書のサムプリントに置き換えます $thumbprint = “YOUR_THUMBPRINT” Import-Module IISAdministration New-IISSiteBinding -Name “Default Web Site” -BindingInformation “*:443:” -CertificateThumbPrint $thumbprint -CertStoreLocation “cert:\LocalMachine\My” — 簡単なメモですが、これらすべてはテストには最適ですが、自己署名証明書はデフォルトでは信頼されていないため、ブラウザーからエラーが発生します。スムーズに動作させるには、ルートCAを手動でインストールするか、ローカルマシン上の証明書を信頼する必要があります。この記事が、自己署名証明書の作成、エクスポート、そして使用をスムーズに行うための参考になれば幸いです。これはWindows管理の中でも特に魅力的な部分ではありませんが、社内ツールの構築や安全なテストを行う上で非常に重要です。
まとめ
New-SelfSignedCertificate最新の柔軟な証明書の作成に使用します。- アレイまたはを使用して SAN を指定します
-TextExtension。 - 展開および信頼の設定のために PFX または CER にエクスポートします。
- GUI または PowerShell を使用して IIS に証明書をバインドします。
まとめ
自己署名証明書を動作させるのは必ずしも楽しいことではありませんが、一度コツをつかんでしまえば、かなり簡単です。PowerShellを管理者として時々実行し、自分のサムプリントを記録しておくことを忘れないでください。それでも、実際の認証局の領域に陥ることなく、HTTPSをテストしたり、内部トラフィックを暗号化したりする確実な方法です。この方法が、よくある落とし穴を回避するのに役立つことを願っています。私はいくつかの設定でうまくいきましたので、皆さんにも同じように効果があることを願っています。