自己署名証明書を使用して.ps1
に署名しようとしています。実際のCAを で使用するか、またはその代金を支払う必要があります)。しかし、私が読んだ証明書生成とデジタル署名の話題について、どれだけのガイドがあっても、私はそれを働かせることはできません。自己署名証明書を使用してPowerShellスクリプトに署名する(とmakecert.exeを使用しない)
# Create a certificate to use as trusted root of the signing chain
$root = New-SelfSignedCertificate `
-Subject "CN=PowerShell Trusted Authority" `
-FriendlyName "PowerShell Trusted Authority" `
-KeyUsageProperty Sign `
-KeyUsage CertSign, CRLSign, DigitalSignature `
-CertStoreLocation Cert:\LocalMachine\My\ `
-NotAfter (Get-Date).AddYears(10)
# Create a certificate to use for signing powershell scripts
New-SelfSignedCertificate `
-Signer $root `
-Subject "CN=PowerShell Code Signing" `
-KeyAlgorithm RSA `
-KeyLength 2048 `
-Type CodeSigningCert `
-CertStoreLocation Cert:\LocalMachine\My\
# Move the root cert into Trusted Root CAs
Move-Item "Cert:\LocalMachine\My\$($root.Thumbprint)" Cert:\LocalMachine\Root
行政PowerShellのインスタンスから行う上記のすべてを:ここで
は、私がこれまでに達成したものです。それが完了すると、管理コンソールの両方の証明書が予定された場所に表示され、署名証明書の証明書パスが有効なものとしてチェックアウトされます。
私はその後、通常のPSプロンプトを開き、スクリプトに署名しようとすると:あなたが見ることができるように
# Obtain a reference to the signing certificate
PS> $cert = Get-ChildItem Cert:\LocalMachine\My\ -CodeSigningCert
# Attempt at signing
PS> Set-AuthenticodeSignature .\Microsoft.PowerShell_profile.ps1 $cert
Directory: C:\Users\tomas\Documents\WindowsPowerShell
SignerCertificate Status Path
----------------- ------ ----
UnknownError Microsoft.PowerShell_profile.ps1
を、実際の署名は失敗します。 PowerShellファイルを見ると、スクリプトに署名が追加されていないことがわかります。
私が管理者のプロンプトから署名すると、もう少し手間がかかります。署名ブロックがスクリプトに追加され、Set-AuthenticodeSignature
の出力に署名証明書の拇印が印刷されますが、ステータスはまだUnknownError
であり、AllSigned
ポリシーでの実行は依然として許可されていません。
# Output some info about the certificate:
PS> $cert | Format-List
Subject : CN=PowerShell Code Signing
Issuer : CN=PowerShell Trusted Authority
Thumbprint : <omitted>
FriendlyName :
NotBefore : 9/20/2017 10:48:59 PM
NotAfter : 9/20/2018 11:08:59 PM
Extensions : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid,
System.Security.Cryptography.Oid, System.Security.Cryptography.Oid}
私はいつも同じ状態メッセージ(UnknownError
)と、特にコード署名の証明書を生成するために、New-SelfSignedCertificate
呪文の変異体の多くを試みました。
私の究極の目標は、Set-ExecutionPolicy AllSigned
を持つことができ、自分自身で作成したスクリプトを実行できることです。私はこのプロセスで何が欠けているのですか?
興味深い。エラーの詳細は何ですか? –
@Bill_Stewart:残念ながら、いいえ。 '$ Error'変数はこの失敗の後では空白です。なぜなら、なぜ失敗するのかを示すどこの出力も得られません。どのトラブルシューティングの提案も大歓迎です:) –
その出力にはどのようなタイプの 'Status'プロパティがありますか? –