Tôi đang sử dụng mã tương tự như tìm thấy ở đây để tạo ra một chứng chỉ tự ký để sử dụng trong IIS: http://blogs.technet.com/b/vishalagarwal/archive/2009/08/22/generating-a-certificate-self-signed-using-powershell-and-certenroll-interfaces.aspxSử dụng PowerShell để tạo Self-Signed Certificate
trình tốt, ngoại trừ tôi muốn cung cấp cho nó một cái tên thân thiện để xác định vị trí dễ dàng hơn khi tôi muốn chỉ định chứng chỉ cho trang web được tạo động.
Bất cứ ai cũng biết cách thay đổi phần trên để đặt tên thân thiện (tôi đã thử những gì dường như rõ ràng là không có sẵn).
Có cách nào tốt hơn để tạo chứng chỉ qua PowerShell không nhắc người dùng cung cấp thông tin?
Số trên kịch bản tôi đang sử dụng - dựa trên url trên nhưng biến thành một cmdlet:
function Add-SelfSignedCertificate
{
[CmdletBinding()]
param
(
[Parameter(Mandatory=$True, ValueFromPipelineByPropertyName=$True)]
[Alias('cn')]
[string]$CommonName
)
$name = new-object -com "X509Enrollment.CX500DistinguishedName.1"
$name.Encode("CN=$CommonName", 0)
$key = new-object -com "X509Enrollment.CX509PrivateKey.1"
$key.ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
$key.KeySpec = 1
$key.Length = 1024
$key.SecurityDescriptor = "D:PAI(A;;0xd01f01ff;;;SY)(A;;0xd01f01ff;;;BA)(A;;0x80120089;;;NS)"
$key.MachineContext = 1
$key.Create()
$serverauthoid = new-object -com "X509Enrollment.CObjectId.1"
$serverauthoid.InitializeFromValue("1.3.6.1.5.5.7.3.1")
$ekuoids = new-object -com "X509Enrollment.CObjectIds.1"
$ekuoids.add($serverauthoid)
$ekuext = new-object -com "X509Enrollment.CX509ExtensionEnhancedKeyUsage.1"
$ekuext.InitializeEncode($ekuoids)
$cert = new-object -com "X509Enrollment.CX509CertificateRequestCertificate.1"
$cert.InitializeFromPrivateKey(2, $key, "")
$cert.Subject = $name
$cert.Issuer = $cert.Subject
$cert.NotBefore = get-date
$cert.NotAfter = $cert.NotBefore.AddDays(90)
$cert.X509Extensions.Add($ekuext)
$cert.Encode()
$enrollment = new-object -com "X509Enrollment.CX509Enrollment.1"
$enrollment.InitializeFromRequest($cert)
$certdata = $enrollment.CreateRequest(0)
$enrollment.InstallResponse(2, $certdata, 0, "")
}
Điều này sẽ được bao gồm trong một kịch bản InstallShield do đó các hộp thoại popup makecert.exe hiển thị là có vấn đề. – roderickprince
Công việc selfssl.exe có hoạt động không? http://www.robbagby.com/iis/self-signed-certificates-on-iis-7-the-easy-way-and-the-most-effective-way/ –