Certificats auto-signé
Certificat exportable
Crée un certificat exportable auto-signé dans le magasin personnel de l'utilisateur courant pour un usage de signature numérique.
$certname = "CertForVpn" $cert= New-SelfSignedCertificate -Subject "CN=$certname" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256 Export-Certificate -Cert $cert -FilePath "C:\temp\$certname.cer"
- Subject “CN=$certname” : définit le nom du sujet du certificat à “CN=CertForVpn”.
- CertStoreLocation “Cert:\CurrentUser\My” : le certificat est stocké dans le magasin personnel de l'utilisateur courant.
- KeyExportPolicy Exportable : la clé privée peut être exportée ultérieurement.
- KeySpec Signature : la clé est destinée à des signatures numériques.
- KeyLength 2048 : utilise une clé RSA de 2048 bits, ce qui est un bon compromis sécurité/performance.
- KeyAlgorithm RSA : l’algorithme de chiffrement est RSA.
- HashAlgorithm SHA256 : l’algorithme de hachage utilisé est SHA-256.
- Export-Certificate -Cert $cert -FilePath “C:\temp\$certname.cer” : Le certificat est exporté directement dans le répertoire C:\temp, en utilisant comme nom de fichier celui défini pour le sujet du certificat. Il est nécessaire de créer ce répertoire avant d'exécuter le script.
Créer un certificat root ca et un certificat client
Le script ci-dessous créé 2 certificats : un root ca et un client, utilisé pour configurer une authentification par certificat, par exemple dans une connexion VPN point-à-site (P2S)
- Créé un certificat RootCa pour la clé public coté serveur
- Créé le certificat utilisateur
- Exporte le certificat au format X.509 binaire encodé DER
- Converti au format X.509 encodé en base 64
$certnameca = "RootCa"
$certnamecl = "ClientP2S"
$cert = New-SelfSignedCertificate -Type Custom -KeySpec Signature -Subject "CN=$certnameca" -KeyExportPolicy Exportable -HashAlgorithm sha256 -KeyLength 2048 -CertStoreLocation "Cert:\CurrentUser\My" -KeyUsageProperty Sign -KeyUsage CertSign
New-SelfSignedCertificate -Type Custom -DnsName $certnamecl -KeySpec Signature -Subject "CN=$certnamecl" -KeyExportPolicy Exportable -HashAlgorithm sha256 -KeyLength 2048 -CertStoreLocation "Cert:\CurrentUser\My" -Signer $cert -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2")
$DERCert = "C:\temp\$certnameca.cer"
$Base64Cert = "C:\temp\Base64_$certnameca.cer"
Export-Certificate -Cert $cert -FilePath $DERCert
Start-Process -FilePath 'certutil.exe' -ArgumentList "-encode $DERCert $Base64Cert" -WindowStyle Hidden