PowerShellを使用してWindowsで自己署名証明書を作成するにはどうすればよいですか?
PKIに精通しているWindows管理者の大多数は、 MakeCert.exe
について知っています。 自己署名証明書を作成できるツール。このツールは、Microsoft .NETFrameworkSDKおよびMicrosoftWindowsSDKの一部です。最新のWindowsバージョン(Windows 10/8.1およびWindowsServer2019/2016 / 2012R2)では、組み込みのPowerShellコマンドレット New-SelfSignedCertificate
を使用して自己署名証明書を作成できます。 追加のツールを使用せずに。
New-SelfSignedCertificatePowerShellコマンドレットを使用した自己署名証明書の作成
PowerShellを使用して自己署名証明書を作成するには、 New-SelfSignedCertificateを使用できます。 PoSh PKIの一部であるコマンドレット (公開鍵インフラストラクチャ)モジュール:
PKIモジュールで使用可能なすべてのコマンドレットを一覧表示するには、コマンドを実行します。
Get-Command -Module PKI
PKI / CAインフラストラクチャを展開できない場合、または信頼できるものを購入できない場合は、テスト目的で自己署名証明書を使用するか、内部イントラネットサービス(IIS、Exchange、Webアプリケーションプロキシ、LDAPS、ADRMS、DirectAccessなど)の証明書を提供することをお勧めします。外部プロバイダーからの証明書。
ヒント 。 Let’sEncryptから無料のSSL証明書を簡単に入手できることを忘れないでください。 Let's Encrypt SSL証明書を発行し、それをWindowsServerのIISサイトにバインドする方法の例を次に示します。証明書を作成するには、 –DnsNameの値を指定する必要があります (サーバーの名前。名前は任意であり、ローカルホスト名とは異なる場合があります)および -CertStoreLocation (生成された証明書が配置されるローカル証明書ストア)。コマンドレットを使用して、Windows 10(この例では)、Windows 8.1、およびWindows Server 2019/2016/2012R2/2012で自己署名証明書を作成できます。
DNS名test.contoso.com(FQDN名を使用)の新しいSSL証明書(デフォルトのSSLServerAuthenticationタイプ)を作成し、それをコンピューター上の個人証明書のリストに配置するには、次のコマンドを実行します。
New-SelfSignedCertificate -DnsName test.contoso.com -CertStoreLocation cert:\ LocalMachine \ My
ディレクトリ:Microsoft.PowerShell.Security \ Certificate ::LocalMachine\MyThumbprint件名---------- 昇格されていないPowerShellセッション(ローカル管理者権限なし)でこのコマンドを実行すると、エラーが表示されます:New-SelfSignedCertificate:CertEnroll ::CX509Enrollment ::_ CreateRequest:アクセスが拒否されました。 0x80090010(-2146893808 NTE_PERM)たとえば、
-KeyAlgorithm "ECDSA_secP256r1" -Provider "Microsoft Smart Card Key Storage Provider"
を使用して、非標準の暗号化プロバイダー(CSP)を指定した場合 パラメータについては、コンピュータにインストールされていることを確認してください(デフォルトはMicrosoft Enhanced Cryptographic Provider CSPです)。そうしないと、エラーが表示されます:New-SelfSignedCertificate:CertEnroll ::CX509Enrollment ::_ CreateRequest:プロバイダータイプが定義されていません。 0x80090017(-2146893801 NTE_PROV_TYPE_NOT_DEF)。
このコマンドは、新しい証明書を作成し、それをコンピューターの個人証明書ストアにインポートします。 certlm.mscを開きます MMCスナップイン、新しい証明書が個人に表示されることを確認します 証明書ストアのセクション。
デフォルトでは、自己署名証明書は次の設定で生成されます。
- 暗号化アルゴリズム: RSA ;
- キーの長さ:2048ビット;
- 許容されるキーの使用法:クライアント認証 およびサーバー認証;
- 証明書は次の目的で使用できます:デジタル署名 、キー暗号化;
- 証明書の有効期間:1年 。
Get-ChildItemコマンドレットを使用すると、作成された証明書のすべてのパラメーターをその拇印で表示できます。
Get-ChildItem -Path "Cert:\ LocalMachine \ My" | Where-Object Thumbprint -eq 2175A76B10F843676951965F52A718F635FFA043 | Select-Object *
PSPath:Microsoft.PowerShell.Security \証明書::LOCALMACHINE \マイ\ 2175A76B10F843676951965F52A718F635FFA043PSParentPath:Microsoft.PowerShell.Security \証明書::LOCALMACHINE \ MyPSChildName:2175A76B10F843676951965F52A718F635FFA043PSDrive:CertPSProvider:Microsoft.PowerShell.Security \ CertificatePSIsContainer:FalseEnhancedKeyUsageList:{クライアント認証(1.3.6.1.5.5.7.3.2)、サーバー認証(1.3.6.1.5.5.7.3.1)} DnsNameList:{test.contoso.com} SendAsTrustedIssuer:FalseEnrollmentPolicyEndPoint:Microsoft.CertificateServices.Commands.EnrollmentEndPointPropertyEnrollmentServerEnd .Commands.EnrollmentEndPointPropertyPolicyId:Archived:FalseExtensions:{System.Security.Cryptography.Oid、System.Security.Cryptography.Oid、System.Security phy.Oid}フレンドリ:IssuerName:System.Security.Cryptography.X509Certificates.X500DistinguishedNameNotAfter:2021年5月11日06:19:42NotBefore:2020年5月11日05:59:42HasPrivateKey:TruePrivateKey:のPublicKey:System.Security.Cryptography。 X509Certificates.PublicKeyRawData:{48、130、3、45 ...}のSerialNumber:6797F5E3F870478D4D3798BEB291DBF3SubjectName:System.Security.Cryptography.X509Certificates.X500DistinguishedNameSignatureAlgorithm:System.Security.Cryptography.OidThumbprint:2175A76B10F843676951965F52A718F635FFA043Version:3Handle:2834444631568Issuer:CN =test.contoso。 comSubject:CN =test.contoso.com注 。このような自己署名証明書は、作成日から1年で有効期限が切れます。 –NotAfter を使用して、別の証明書の有効期間を設定できます オプション。たとえば、次のコマンドを使用して、有効期間が3年のSSL/TLS証明書を発行できます。
$ todaydt =Get-Date
$ 3years =$ todaydt.AddYears(3)
New-SelfSignedCertificate -dnsname test.contoso.com -notafter $ 3years -CertStoreLocation cert:\ LocalMachine \ My
証明書チェーンを作成できます。最初に、ルート証明書(CA)が作成され、それに基づいてSSLサーバー証明書が生成されます。
$ rootCert =New-SelfSignedCertificate -Subject'CN =TestRootCA、O =TestRootCA、OU =TestRootCA' -KeyExportPolicy Exportable -KeyUsage CertSign、CRLSign、DigitalSignature -KeyLength 2048 -KeyUsageProperty All -KeyAlgorithm'RSA' -HashAlgorithm'SHA -プロバイダー'MicrosoftEnhanced RSA and AES Cryptographic Provider'
New-SelfSignedCertificate -CertStoreLocation cert:\ LocalMachine \ My -DnsName "test2.contoso.com" -Signer $ rootCert -KeyUsage KeyEncipherment、DigitalSignature
秘密鍵を使用して生成された証明書をパスワードで保護されたPFXファイルにエクスポートするには、その拇印を指定する必要があります。 New-SelfSignedCertificateコマンドの結果からコピーできます。また、証明書のセキュリティパスワードを指定し、それをSecureString形式に変換する必要があります。
$ CertPassword =ConvertTo-SecureString -String“ YourPassword” -Force –AsPlainText
Export-PfxCertificate -Cert cert:\ LocalMachine \ My \ 2779C7928D055B21AAA0Cfe2F6BE1A5C2CA83B30 -FilePath C:\ test.pfx -Password $ CertPassword >>
証明書の公開鍵は次のようにエクスポートできます。
Export-Certificate -Cert Cert:\ LocalMachine \ My \ 2779C7928D055B21AAA0Cfe2F6BE1A5C2CA83B30 -FilePath C:\ tstcert.cer
* .cer(PFX)証明書ファイルが指定されたディレクトリに表示されていることを確認してください。右クリックして「証明書のインストール」を選択すると 」メニュー項目では、証明書のインポートウィザードを使用できます コンピュータの信頼されたルート証明書に証明書を追加します。
[証明書ストアの場所]->[ローカルマシン]を選択します 、すべての証明書を次のストアに配置します->信頼されたルート証明機関 。
次のコマンドを使用して、証明書を作成し、すぐにコンピューターの信頼されたルート証明書ストアにインポートできます。
$ SelfSignCert=New-SelfSignedCertificate…..
$ certFile =Export-Certificate -Cert $ SelfSignCert -FilePath C:\ ps \ export-certname.cer
Import-Certificate -CertStoreLocation Cert:\ LocalMachine \ AuthRoot -FilePath $ certFile.FullName
この公開鍵または証明書ファイル自体は、GPOを使用してActive Directoryドメイン内のすべてのコンピューターとサーバーに展開できます(GPOを使用してドメインコンピューターに証明書を展開する方法は?)。
New-SelfSignedCertificateコマンドレットの便利な機能の1つは、いくつかの異なる名前、サブジェクト代替名(SAN)で証明書を作成する機能です。 。
注 。 Makecert.exe
New-SelfSignedCertificateコマンドレットとは異なり、ツールはSANおよびワイルドカード証明書を生成できません。 複数の名前で証明書を作成する場合は、DnsNameパラメーターの名が証明書のCN(共通名)として使用されます。たとえば、次の名前で自己署名SAN証明書を作成しましょう。
- 件名(CN):adfs1.contoso.com
- サブジェクト代替名(DNS):web_gw.contoso.com
- サブジェクト代替名(DNS):enterprise_reg.contoso.com
証明書を作成するためのコマンドは次のようになります:
New-SelfSignedCertificate -DnsName adfs1.contoso.com、web_gw.contoso.com、enterprise_reg.contoso.com -CertStoreLocation cert:\ LocalMachine \ My
また、ワイルドカードを生成することもできます ドメイン名前空間全体の証明書。これを行うには、*。contoso.comを指定します サーバー名として。
New-SelfSignedCertificate -certstorelocation cert:\ localmachine \ my -dnsname * .contoso.com
PoweShell 3.0では、New-SelfSifgnedCertificateコマンドレットは、ドライバー、アプリケーション、またはスクリプトコードの署名に使用できないSSL証明書のみを生成します(MakeCertユーティリティによって生成される証明書とは異なります)。
PowerShellバージョン5.0以降では、新しいバージョンのNew-SelfSifgnedCertificateコマンドレットを使用してコード署名を発行できるようになりました。 証明書。
自己署名アプリケーションコード署名証明書を作成するには、次のコマンドを実行します。
$ cert =New-SelfSignedCertificate -Subject "My Code Signing Certificate" -Type CodeSigningCert -CertStoreLocation cert:\ LocalMachine \ My
これで、自己署名証明書を使用してPowerShellスクリプトに署名できます。
Set-AuthenticodeSignature -FilePath C:\ PS \ my_posh_script.ps1 -Certificate $ cert
UnknownErrorを受け取った場合 コマンドの実行時に警告が表示されます。これは、証明書がユーザーの個人証明書ストアにあるため、証明書が信頼されていないことを意味します。
信頼されたルート証明書ストアに移動する必要があります(Windows証明書のルートストアで信頼できない証明書や疑わしい証明書を定期的にスキャンし、信頼できるルート証明書のリストを更新することを忘れないでください)。
Move-Item -Path $ cert.PSPath -Destination "Cert:\ CurrentUser \ Root"
その後、この自己署名証明書を使用してPowerShellスクリプトに署名できます。
WindowsServerIISのIISでSHA-256自己署名SSL証明書を使用する
Internet Information Managerコンソールを使用してIISの自己署名証明書を作成する場合(自己署名証明書の作成)に注意してください。 アクションメニュー項目)、SSL証明書はSHA-1暗号化アルゴリズムを使用して作成されます。このような証明書は、多くのブラウザで信頼されていないと見なされ、安全な接続を確立するために使用することはできません(または、他のSSLエラーが表示される場合があります)。 New-SelfSignedCertificateコマンドレットを使用すると、SHA-256暗号化アルゴリズムを使用してより一般的なタイプの証明書を作成できます。
PowerShellで生成された自己署名SHA-256証明書をWindowsServerのIISサイトにバインドできます。 PowerShellを使用してSSL証明書を作成し、それをコンピューターの証明書ストアに配置すると、IISサイトで自動的に使用できるようになります。
IISマネージャーコンソールを起動し、サイトを選択してから、サイトのバインド オプションで、作成した証明書を選択して変更を保存します。
-
Windows 10 および Windows 11 で Visual Studio Code を使用して PowerShell スクリプトを作成する方法
Windows 10 と Windows 11 で PowerShell スクリプトを作成できることをご存知ですか? Windows に PowerShell をインストールしたので、PC で PowerShell を使用して何ができるか知りたいと思うかもしれません。このガイドでは、Visual Studio Code を使用して簡単なスクリプト ファイルを作成し、そのスクリプト ファイルを Windows 10 の PowerShell で実行する方法について説明しますおよび Windows 11. まず、基本的な PowerShell スクリプトを作成する方法を学ぶ必要があります。それを
-
Windows 11 で Powershell を更新する方法
Windows オペレーティング システムを最新のソフトウェアとセキュリティ更新プログラムで最新の状態に保つことは、コンピューターを維持するために不可欠です。これは、以前のバージョンの Windows よりも安全になるように設計された Windows 11 に特に当てはまります。ただし、セキュリティ上の問題がまったくないわけではありません。また、Windows OS を最新の状態に保つことは、Microsoft から利用可能になった新しい機能にアクセスできることも意味します。 私たちのブログの定期的な読者であれば、ソフトウェアの更新とパッチ適用の重要性をすでにご存知かもしれません。通常、これ