makecert.exe -pe -r -n "cn=MosserPowerShellTestCert" -eku 1.3.6.1.5.5.7.3.3 -ss "my" Succeeded
PS E:> ls cert:CurrentUserMy | where {$_.subject -eq "CN=MosserPowerShellTestCert"}
目录: Microsoft.PowerShell.SecurityCertificate::CurrentUserMy
Thumbprint Subject
---------- -------
BA61AF0B8A856422AD9EF86104C8CEDB2583A21A CN=MosserPowerShellTestCert
## 查看预期目的为代码签名的证书:
$certs = @(Dir cert:CurrentUserMy -codeSigningCert)
"找到 {0} 个代码签名证书" -f $certs.count
# 找到 1 个代码签名证书
## 选择 刚才创建的证书
$certificate=ls cert:CurrentUserMy | where {$_.subject -eq "CN=MosserPowerShellTestCert"}
## 证书的代表
$certificate.subject
# CN=MosserPowerShellTestCert
## 证书的签发者
$certificate.issuer
# CN=MosserPowerShellTestCert
## 证书的序列号,指纹
$certificate | select SerialNumber,Thumbprint | fl *
# SerialNumber : C23F35EA85D9A5AB466C07A7C0469A78
# Thumbprint : 586A4332F0528867DA6A0900FCF0938EDD277E22
PS E:> $certificate.Verify() False
PS E:> [System.Reflection.Assembly]::LoadWithPartialName("System.Security")
GAC Version Location
--- ------- --------
True v2.0.50727 C:windowsassemblyGAC_MSILSystem.Security2.0.0.0__b03f5f7f11d50a3aSys...
[System.Security.Cryptography.x509Certificates.X509Certificate2UI]::DisplayCertificate($certificate)
PS E:> $rootStore= New-Object system.security.cryptography.X509Certificates.x509Store("root","Curre
ntuser")
$rootStore.Open("ReadWrite")
$rootStore.Add($certificate)
$rootStore.Close()
PS E:> $certificate.Verify() True
PS E:> 'Write-Host "我的第一个签名脚本"' > firstSignScript.ps1
PS E:> $certificate=ls cert:CurrentUserMy | where {$_.subject -eq "CN=MosserPowerShellTestCert"}
PS E:> Set-AuthenticodeSignature .firstSignScript.ps1 $certificate
目录: E:
SignerCertificate Status Path
----------------- ------ ----
586A4332F0528867DA6A0900FCF0938EDD277E22 Valid firstSignScript.ps1
PS E:> Get-Content .firstSignScript.ps1
Write-Host "我的第一个签名脚本"
# SIG # Begin signature block
# MIIEIQYJKoZIhvcNAQcCoIIEEjCCBA4CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUnxRdr+yE6sFotfvZjfn8k15W
# OtigggI0MIICMDCCAZ2gAwIBAgIQwj816oXZpatGbAenwEaaeDAJBgUrDgMCHQUA
# MCMxITAfBgNVBAMTGE1vc3NlclBvd2VyU2hlbGxUZXN0Q2VydDAeFw0xMjA2MTYx
# MzAyMjZaFw0zOTEyMzEyMzU5NTlaMCMxITAfBgNVBAMTGE1vc3NlclBvd2VyU2hl
# bGxUZXN0Q2VydDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAr/2eZ6iS3Zi4
# Q2RsXFPRmDynztxPwArZ6SK663R6X2Dfqwv+kuev4VbEHJ20Bvd9yLvCS4QgCCR6
# n0D+ELfBy6aRpst51dNKNGV74TZIBu1M5EKG2+didLrKTx3lwEC66Bl+QyFiOzcH
# ZhQcaZzgdx8m8EN10/B2cDg9Tm9ppQsCAwEAAaNtMGswEwYDVR0lBAwwCgYIKwYB
# BQUHAwMwVAYDVR0BBE0wS4AQjHzaaSg4KlNdyvIpJNjeiqElMCMxITAfBgNVBAMT
# GE1vc3NlclBvd2VyU2hlbGxUZXN0Q2VydIIQwj816oXZpatGbAenwEaaeDAJBgUr
# DgMCHQUAA4GBAFA3lvWcbA8mWndKdIOCzQUbC9/+1vIeQRGaH7L6U6OHZuV2IBw1
# EpLxz1/dyFEMNZmy9z+/YjfJi774UY1eTzOJnz0AYKGPpM0BK2ieGZzPDIlbkpv1
# ywrv5BtRt053MNHRYaZQP0v9Sp6pOB4h10tKnvh0DW882zRPeB4hkK+fMYIBVzCC
# AVMCAQEwNzAjMSEwHwYDVQQDExhNb3NzZXJQb3dlclNoZWxsVGVzdENlcnQCEMI/
# NeqF2aWrRmwHp8BGmngwCQYFKw4DAhoFAKB4MBgGCisGAQQBgjcCAQwxCjAIoAKA
# AKECgAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEO
# MAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFMgyEZ64UFors3z9JGuKLVxh
# P2hLMA0GCSqGSIb3DQEBAQUABIGAMHFJHMVlauxKGIo2p9ieFBVp4Am6n533k89j
# 7pQXKOGmU/sG9d8PILifHLJZw7BU66+uZFvOSXlUxvqaPRAdeosc2BLDPf5Cu6o7
# 61BfSJc2H5dQCgbK/90OKmeJp4KJQRCk7HLEBvV23ddVSyl4CPplbUcTVmo92Zd1
# B/Moxro=
# SIG # End signature block
PS E:> Set-AuthenticodeSignature (ls *.ps1) $certificate 目录: E: SignerCertificate Status Path ----------------- ------ ---- 586A4332F0528867DA6A0900FCF0938EDD277E22 Valid firstSignScript.ps1 586A4332F0528867DA6A0900FCF0938EDD277E22 Valid MyScript.ps1 586A4332F0528867DA6A0900FCF0938EDD277E22 Valid pipeline.ps1 586A4332F0528867DA6A0900FCF0938EDD277E22 Valid PSLib.ps1
Set-AuthenticodeSignature (Dir -recurse -include *.ps1) $certificate
Dir cert:CurrentUserMy |
where {$_.subject -eq "CN=MosserPowerShellTestCert"}
# 对话框文本:
$title = "可用的证书"
$text = "请选择用于代码签名的证书:"
# Find certificates:
$certificates = Dir cert: -recurse -codeSigningCert
# 加载 System.Security 类库
# 将证书存放在特殊的集合(X509Certificate2Collection)中:
[Reflection.Assembly]::LoadWithPartialName("System.Security")
$collection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection
$certificates | ForEach-Object { $collection.Add($_) }
# 显示选项:
$certificate =[System.Security.Cryptography.x509Certificates.X509Certificate2UI]::`
SelectFromCollection($collection, $title, $text, 0)
# 使用选择的证书进行数字签名
Set-AuthenticodeSignature -Certificate $certificate[0] -FilePath .firstSignScript.ps1
"'未签名'" >notsign.ps1 $checkResult=Get-AuthenticodeSignature .notsign.ps1 $checkResult.Status NotSigned $checkResult.StatusMessage 文件 E:notsign.ps1 未经数字签名。系统将不执行该脚本。有关详细信息,请参阅 "get-help about_signing" 。 $checkResult.Status.GetType().fullName System.Management.Automation.SignatureStatus
| 成员名称 | 描述 |
| HashMismatch | 文件的哈希码和存储的签名不匹配 |
| Incompatible | 无法验证签名,因为与当前操作系统不兼容 |
| NotSigned | 文件没有签名 |
| NotSupportedFileFormat | 指定的文件格式不支持的系统签名。这通常意味着系统不知道如何签名或验证文件的类型。 |
| NotTrusted | 证书的发布者在系统中不受信任. |
| UnknownError | 文件签名无效 |
| Valid | 该文件有一个有效的签名。这意味着只有签名的语法上是合法的。这并不意味着信任。 |
# 设置 ExecutionPolicy 为 AllSigned. 所有 # 脚本必须有正确的签名: Set-ExecutionPolicy AllSigned # 创建一个没有签名的脚本. # 该脚本不会执行: 无法加载文件 E:unSigned.ps1。文件 E:unSigned.ps1 未经数字签名。系统将不执行该脚本。有关详细信息, 请参阅 "get-help about_signing"。。 所在位置 行:1 字符: 15 + .unSigned.ps1 < <<< + CategoryInfo : NotSpecified: (:) [], PSSecurityException + FullyQualifiedErrorId : RuntimeException 即使签名可以通过验证,也需要用户的批准,才能执行。 .firstSignScript.ps1 是否要运行来自此不可信发布者的软件? 文件 E:firstSignScript.ps1 由 CN=MosserPowerShellTestCert 发布,该文件对于您的系统是不可信的。请只运行来自可信发布者的脚本。 [V] 从不运行(V) [D] 不运行(D) [R] 运行一次(R) [A] 始终运行(A) [?] 帮助 (默认值为“D”): a 我的第一个签名脚本 #第二次执行,不会询问 我的第一个签名脚本
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有