В современном цифровом пространстве безопасная связь имеет первостепенное значение. Одним из важнейших аспектов установления безопасных соединений является генерация запросов на подпись сертификата (CSR). В этой статье блога мы углубимся в различные методы создания CSR с помощью PowerShell. Пристегнитесь и давайте исследовать мир КСО!
Метод 1: использование командлета New-SelfSignedCertificate
PowerShell предоставляет удобный командлет New-SelfSignedCertificate, позволяющий создать самозаверяющий сертификат вместе с соответствующим CSR. Вот пример того, как вы можете его использовать:
$cert = New-SelfSignedCertificate -CertStoreLocation cert:\LocalMachine\My -DnsName "example.com" -KeyUsage DigitalSignature
$csr = $cert | Get-CertificateRequest -Type CSR
$csr | Format-CertificateRequest -Type 'CertificationRequest'
Метод 2: использование OpenSSL с PowerShell
OpenSSL — это широко используемый набор инструментов с открытым исходным кодом для протоколов SSL/TLS. PowerShell позволяет вызывать команды OpenSSL для генерации CSR. Вот пример:
$opensslPath = "C:\OpenSSL\bin\openssl.exe"
$privateKeyPath = "C:\path\to\private.key"
$csrPath = "C:\path\to\csr.csr"
$command = "& '$opensslPath' req -new -newkey rsa:2048 -nodes -keyout '$privateKeyPath' -out '$csrPath'"
Invoke-Expression $command
Метод 3. Создание CSR на основе существующего закрытого ключа
Если у вас уже есть закрытый ключ и вам необходимо создать CSR, PowerShell также позволяет вам это сделать. Вот пример:
$privateKeyPath = "C:\path\to\private.key"
$csrPath = "C:\path\to\csr.csr"
$privateKey = Get-Content $privateKeyPath -Raw
$csr = New-Object System.Security.Cryptography.Pkcs.Pkcs10CertificationRequest -ArgumentList $privateKey
$csrBytes = $csr.Encode()
[System.IO.File]::WriteAllBytes($csrPath, $csrBytes)
Метод 4: использование библиотеки BouncyCastle
BouncyCastle — это мощная криптографическая библиотека, которую можно интегрировать с PowerShell для генерации CSR. Вот пример:
Add-Type -Path "C:\path\to\BouncyCastle\BouncyCastle.Crypto.dll"
$keyPairGenerator = [BouncyCastle.Crypto.Generators.RsaKeyPairGenerator]::new()
$keyPairGenerator.Init([BouncyCastle.Crypto.KeyGenerationParameters]::new([BouncyCastle.Security.SecureRandom]::new(), 2048))
$keyPair = $keyPairGenerator.GenerateKeyPair()
$subjectDN = [BouncyCastle.Asn1.X509.X509Name]::new("CN=example.com")
$pkcs10CertificationRequest = [BouncyCastle.Pkcs.Pkcs10CertificationRequest]::new("SHA256WITHRSA", $subjectDN, $keyPair.Public)
$csrBytes = $pkcs10CertificationRequest.GetEncoded()
[System.IO.File]::WriteAllBytes("C:\path\to\csr.csr", $csrBytes)
В этой статье мы рассмотрели несколько методов создания CSR с помощью PowerShell. Мы рассмотрели командлеты PowerShell, интеграцию OpenSSL, работу с существующими закрытыми ключами и использование библиотеки BouncyCastle. Имея в своем распоряжении эти методы, вы можете уверенно создавать CSR для безопасного обмена данными внутри вашей сети или веб-приложений.