====== 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