5 votes

Créer un certificat de signature de code sur Windows pour signer les scripts PowerShell scripts.

によると ce guide J'ai essayé de créer un certificat pour signer les scripts de PowerShell :

CD C:\OpenSSL-Win32\bin
REM Create the key for the Certificate Authority.  2048 is the bit encryptiong, you can set it whatever you want
openssl genrsa -out C:\Test\ca.key 2048
openssl req -config C:\OpenSSL-Win32\bin\openssl.cfg -new -x509 -days 1826 -key C:\Test\ca.key -out C:\Test\ca.crt
REM Now I'm creating the private key that will be for the actual code signing cert
openssl genrsa -out C:\Test\codesign.key 2048
openssl req -config C:\OpenSSL-Win32\bin\openssl.cfg -new -key C:\Test\codesign.key -reqexts v3_req -out C:\Test\codesign.csr
openssl x509 -req -days 1826 -in C:\Test\codesign.csr -CA C:\Test\ca.crt -CAkey C:\Test\ca.key -extfile C:\OpenSSL-Win32\bin\cnf\opensslTest.cnf -set_serial 01 -out C:\Test\codesign.crt
openssl pkcs12 -export -out C:\Test\codesign.pfx -inkey C:\Test\codesign.key -in C:\Test\codesign.crt

L'erreur suivante s'est produite :

C:\OpenSSL-Win32\bin>openssl x509 -req -days 1826 -in C:\Test\codesign.csr -CA C:\Test\ca.crt -CAkey C:\Test\ca.key -extfile C:\OpenSSL-Win32\bin\cnf\openssl.cnf -set_serial 01 -out C:\Test\codesign.crt
Error Loading extension section default
14516:error:22097082:X509 V3 routines:do_ext_nconf:unknown extension name:crypto\x509v3\v3_conf.c:78:
14516:error:22098080:X509 V3 routines:X509V3_EXT_nconf:error in extension:crypto\x509v3\v3_conf.c:47:name=HOME, value=.

J'ai utilisé OpenSSL v1.1.0c . Tous les autres guides que j'ai trouvés créent des certificats qui ne sont pas utilisables pour la signature de code.

16voto

Crypt32 Points 6184

Il n'y a pas besoin d'OpenSSL sous Windows. Sous Windows 7, vous pouvez utiliser mon propre script PowerShell que j'ai publié sur la galerie script de TechNet : Générateur de certificats auto-signés (PowerShell) . L'utilisation peut être quelque chose comme ceci :

New-SelfsignedCertificateEx -Subject "CN=Test Code Signing" `
-EKU "Code Signing" `
-KeySpec "Signature" `
-KeyUsage "DigitalSignature" `
-FriendlyName "Test code signing" `
-NotAfter $([datetime]::now.AddYears(5))

(tout premier exemple).

À partir de Windows 8, vous pouvez utiliser les certreq.exe pour générer le certificat. Créez un fichier INF avec la configuration du certificat, par exemple :

[NewRequest]
Subject = "CN=Test Code Signing"
KeyLength = 2048
KeyAlgorithm = RSA
ProviderName = "Microsoft Enhanced RSA and AES Cryptographic Provider"
MachineKeySet = false
Exportable = true
KeySpec = 2
KeyUsage = 0x80
RequestType = Cert
[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.3 ; Code signing

puis exécutez la commande suivante :

Certreq –new path\inffilename.inf

Cela va générer et installer le certificat dans le magasin de certificats de l'utilisateur actuel.

À partir de Windows 10, vous pouvez utiliser la cmdlet PowerShell intégrée comme suit :

New-SelfSignedCertificate -CertStoreLocation cert:\currentuser\my `
-Subject "CN=Test Code Signing" `
-KeyAlgorithm RSA `
-KeyLength 2048 `
-Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" `
-KeyExportPolicy Exportable `
-KeyUsage DigitalSignature `
-Type CodeSigningCert

Cependant, l'utilisation de certificats auto-signés pour la signature de code dans les environnements de production est déconseillée. Vous devez les utiliser uniquement dans des environnements de test.

Pour un usage privé (au sein de l'organisation uniquement), vous devez vérifier si l'entreprise possède déjà une infrastructure PKI et contacter le personnel approprié pour recevoir un certificat de signature de code approuvé par l'entreprise.

Pour les scripts publics (que vous allez distribuer avec des paquets de logiciels, ou livrer des scripts à vos clients), je suggérerais d'acheter la signature du code auprès d'un fournisseur d'AC commercial de confiance mondiale.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X