목차:
이 모듈은 공식적으로 지원되지 않습니다. 이는 HTTPS 기능 테스트를 단순화하기 위해 자체 서명 인증서 생성을 위한 편의 모듈로 만들어졌습니다.
이 모듈은 프로덕션 시나리오에서 사용되어서는 안 됩니다. 이는 테스트 목적으로만 자체 서명된 인증서를 생성하도록 설계되었습니다.
이 모듈은 PowerShell Core와 Windows PowerShell 5.1 모두에서 자체 서명된 인증서를 생성하는 편리한 플랫폼 간 방법으로 설계되었습니다.
.NET Core에는 이미 자체 플랫폼 간 암호화/인증서 API가 포함되어 있으므로 이 모듈은 이진 종속성이 없는 기본 PowerShell 스크립트 모듈입니다.
이 모듈의 몇 가지 목표는 다음과 같습니다.
X509HighlySpecificCryptoObject
할당 및 조작 없음여기에 나열된 자체 서명 인증서 생성에 대한 몇 가지 다른 대안을 살펴보는 것이 좋습니다.
PkiClient 모듈의 Windows PowerShell New-SelfSignedCertificate
cmdlet.
다음과 같이 WindowsCompatibility 모듈을 사용하여 Windows의 PowerShell Core에서 사용할 수 있습니다.
Install-Module WindowsCompatibility
Import-WinModule PKI
New-SelfSignedCertificate # args as needed
그러나 이 모듈은 Windows에서만 사용할 수 있으며 Linux 버전은 없습니다.
ASP.NET Core 개발을 위해 자체 서명된 인증서를 생성하도록 설계된 dotnet dotnet-dev-certs
전역 도구입니다.
이는 dotnet CLI에서 설치할 수 있습니다.
openssl
은 크로스 플랫폼에서 작동하지만 PowerShell 기본 옵션에 비해 선호되지 않을 수 있으며 PFX 형식이 아닌 PEM을 사용합니다.
간단한 인증서를 만들려면 다음이 작동합니다.
> New-SelfSignedCertificate
Certificate written to C:UsersroholtDocumentsDevsandboxcertificate.pfx
Thumbprint Subject EnhancedKeyUsageList
---------- ------- --------------------
A51B016324B5D2F11340CDCC52004B8129C88D3B CN = localhost
그러면 localhost
용 CWD에 certificate.pfx
라는 새 인증서가 생성됩니다. 명령 자체는 디스크에 기록된 인증서를 설명하는 X509Certificate2
개체를 반환합니다. 이 개체를 검사하여 해당 속성을 찾을 수 있습니다. 이 인증서에는 키 용도, 기본 제약 조건, 향상된 키 용도 및 주체 식별자 키 확장이 없습니다.
참고 : 이 명령을 반복하려면 이전에 생성한 이전 인증서를 덮어쓰기 위해 -Force
매개변수가 필요합니다.
New-SelfSignedCertificate
명령을 사용하면 전체 고유 이름과 몇 가지 다른 옵션을 지정할 수 있습니다.
> $password = ConvertTo-SecureString - Force - AsPlainText ' your password '
> $distinguishedName = @ {
CommonName = ' example.org '
Country = ' US '
StateOrProvince = ' Nebraska '
Locality = ' Omaha '
Organization = ' Umbrella Corporation '
OrganizationalUnit = ' Sales '
EmailAddress = ' [email protected] '
}
> $certificateParameters = $distinguishedName + @ {
OutCertPath = ' C:UsersyouDocumentscert.pfx '
StartDate = [ System.DateTimeOffset ]::Now
Duration = [ timespan ]::FromDays( 365 )
Passphrase = $password
CertificateFormat = ' Pfx ' # Values from [System.Security.Cryptography.X509Certificates.X509ContentType]
KeyLength = 4096
ForCertificateAuthority = $true
KeyUsage = ' DigitalSignature ' , ' KeyEncipherment ' # Values from [System.Security.Cryptography.X509Certificates.X509KeyUsageFlags]
EnhancedKeyUsage = ' ServerAuthentication ' , ' ClientAuthentication '
}
> New-SelfSignedCertificate @certificateParameters - Force
WARNING: Parameter ' EmailAddress ' is obsolete. The email name component is deprecated by the PKIX standard
Certificate written to C:UsersroholtDocumentsDevsandboxhere.pfx
Thumbprint Subject EnhancedKeyUsageList
---------- ------- --------------------
7445433CB2BB4948E12794A167C6725DC214AA84 CN = example.org , O.. . {Server Authentication , Client Authentication}
위 명령으로 생성된 인증서는 다음과 같은 속성을 갖습니다.
발급자와 주체 고유 이름은 다음과 같이 설정됩니다.
CN=example.org, OU=Sales, O=Umbrella Corporation, L=Omaha, S=Nebraska, C=US, [email protected]
비밀번호 보호(이 경우 'Your password'
비밀번호 사용)
유효 기간은 생성 시간부터 시작됩니다(밀리초는 잘림).
4096비트 RSA 키.
CertificateAuthority
true
로 설정된 기본 제약 조건 확장입니다.
Digital Signature
및 Key Encipherment
기본 키 사용법이 표시됩니다.
Server Authentication
및 Client Authentication
강화된 키 사용이 표시됩니다.
이 명령은 System.Security.Cryptography.X509Certificates.X509Extension
배열을 사용하여 생성 인증서에 추가하는 -AdditionalExtension
매개 변수도 제공합니다.
이 모듈은 Linux 세계에서 많이 사용되는 PEM 파일을 아직 지원하지 않습니다. 본질적으로 인증서 형식은 아니지만 인증서의 일반적인 인코딩이므로 어떤 방식으로든 이를 지원하도록 노력해야 합니다.
현재 작성자는 PowerShell Core 또는 .NET Core의 기본 PEM 지원을 인식하지 못합니다.
현재 이 모듈에서 생성된 인증서 확장은 더 큰 유연성을 허용하기 위해 모두 Critical
필드를 false
로 설정합니다.
그러나 이들 중 일부 또는 전부를 Critical
로 지정하도록 구성하는 것이 바람직할 수 있습니다. 이상적으로는 이미 많은 수의 매개변수를 사용하여 명령을 복잡하게 만들지 않고도 이 작업을 수행할 수 있습니다.
현재 ServerAuthentication
및 ClientAuthentication
에서는 향상된 키 사용이 지원됩니다(사용 편의성을 위해 제한적인 방식으로).
이상적으로는 이에 대한 더 많은 옵션을 사용할 수 있습니다.
모듈은 일반적으로 사용되는 인증서 확장을 설명하는 X509Extension
을 생성하는 클래스 세트를 제공할 수 있습니다.
이 모듈은 MIT 라이센스를 받았습니다. LICENSE.txt를 참조하세요.