介紹如何在 Windows 的 PowerShell 中,使用 cmdlet 建立程式碼簽章用的自簽憑證,並對程式進行簽屬。
使用者在使用自我簽屬憑證所簽屬的程式時,需要先安裝與信任憑證,否則程式無法執行,通常自簽憑證僅用於開發與測試階段。
產生自簽憑證
若要產生自簽憑證,可以使用 PowerShell 中的 New-SelfSignedCertificate
這個 cmdlet:
# 建立自簽憑證 New-SelfSignedCertificate -Type Custom ` -Subject "CN=My Software, O=My Corporation, C=TW" ` -KeyUsage DigitalSignature ` -FriendlyName "MyCertificate" ` -CertStoreLocation "Cert:\CurrentUser\My" ` -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")
PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My Thumbprint Subject ---------- ------- 86B1DE90CCFE6640DD3C952CD965939C1E68F1D5 CN=My Software, O=My Corporation, C=TW
產生出來的憑證會存放在本機的憑證存放區 Cert:\CurrentUser\My
之下,我們可以利用以下指令顯示該憑證的詳細資訊:
# 顯示憑證詳細資訊 Get-ChildItem Cert:\CurrentUser\My\86B1DE90CCFE6640DD3C952CD965939C1E68F1D5 | Format-List -Property *
PSPath : Microsoft.PowerShell.Security\Certificate::CurrentUser\My\86B1DE90CCFE6640DD3C952CD965939C1E68F1D5 PSParentPath : Microsoft.PowerShell.Security\Certificate::CurrentUser\My PSChildName : 86B1DE90CCFE6640DD3C952CD965939C1E68F1D5 PSDrive : Cert PSProvider : Microsoft.PowerShell.Security\Certificate PSIsContainer : False EnhancedKeyUsageList : {程式碼簽署 (1.3.6.1.5.5.7.3.3)} DnsNameList : {My Software} SendAsTrustedIssuer : False EnrollmentPolicyEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty EnrollmentServerEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty PolicyId : Archived : False Extensions : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid} FriendlyName : MyCertificate IssuerName : System.Security.Cryptography.X509Certificates.X500DistinguishedName NotAfter : 2022/11/9 上午 10:22:46 NotBefore : 2021/11/9 上午 10:02:46 HasPrivateKey : True PrivateKey : PublicKey : System.Security.Cryptography.X509Certificates.PublicKey RawData : {48, 130, 3, 86...} SerialNumber : 48307AE28F623DB54201D579D8CDED72 SubjectName : System.Security.Cryptography.X509Certificates.X500DistinguishedName SignatureAlgorithm : System.Security.Cryptography.Oid Thumbprint : 86B1DE90CCFE6640DD3C952CD965939C1E68F1D5 Version : 3 Handle : 2201999688256 Issuer : CN=My Software, O=My Corporation, C=TW Subject : CN=My Software, O=My Corporation, C=TW
我們也可以使用控制台中的「管理使用者憑證」來查看新產生的憑證。(或是以「cert」關鍵字在 Windows 工作列中搜尋也可以找到「管理使用者憑證」)
資料來源: https://officeguide.cc/windows-generate-self-signed-certificate-for-code-signing-tutorial-examples/
沒有留言:
張貼留言