SHA256 테스트 인증서 생성 방법
Visual Studio의 C# 프로젝트 설정 창에서 테스트 인증서를 생성하면 SHA1 해시만 지원합니다. 만약, 해당 인증서를 SHA256으로 만들고 싶다면 PowerShell을 이용해,
New-SelfSignedCertificate
; https://learn.microsoft.com/en-us/powershell/module/pkiclient/new-selfsignedcertificate
관리자 권한으로 다음과 같이 실행해 주면 됩니다.
PS C:\temp> New-SelfSignedCertificate -DnsName "MyCert"
PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\MY
Thumbprint Subject
---------- -------
CC699DC2F035A5580ECC0E638E0626EC537905B1 CN=MyCert
생성된 인증서는 "인증서 관리자(certlm, certmgr)"로 확인하면 Current User와 Local Computer 영역에 등록되어 총 3군데 위치하게 됩니다.
Certificates - Current User
\Intermediate Certification Authorities
\ Certificates
Certificates - Local Computer
\Personal
\ Certificates
\Intermediate Certification Authorities
\ Certificates
아울러 속성을 보면, 아래와 같이 SHA256으로 되어 있고!
위의 명령어는 원래 다음과 같이 CertStoreLocation을 준 것과 동일한 효과를 갖습니다.
New-SelfSignedCertificate -DnsName "MyCert" -CertStoreLocation "cert:\LocalMachine\My"
반면 위치를 CurrentUser로 명시하면,
New-SelfSignedCertificate -DnsName "MyCert" -CertStoreLocation "cert:\CurrentUser\My"
이번에는 다음의 경로에만 등록되어 2개가 생성됩니다.
Certificates - Current User
\Personal
\ Certificates
\Intermediate Certification Authorities
\ Certificates
단독 테스트 인증서와 함께 루트를 갖는 테스트 인증서도 가능한데,
New-SelfSignedCertificate -DnsName "MyCert" -CertStoreLocation "cert:\CurrentUser\My" -TestRoot
이럴 때는, "CertReq Test Root"가 루트 인증서가 되고 그 하위에 "MyCert"가 위치합니다.
또한, FriendlyName이나 DnsName도 지정할 수 있고.
New-SelfSignedCertificate -DnsName "www.testsite.co.kr" -CertStoreLocation "cert:\CurrentUser\My" -FriendlyName "TestCert"
이렇게 생성된 테스트 인증서는 비주얼 스튜디오의 프로젝트 속성 창에서 제공하는 서명 용 인증서로 사용할 수 없습니다. 왜냐하면, 인증서의 용도가 "Client Authentication"과 "Server Authentication"으로 기본 지정되기 때문입니다. 따라서 그런 경우에는 명시적으로 "CodeSigning" 옵션을 명시해야 합니다.
New-SelfSignedCertificate -DnsName "www.testsite.co.kr" -Type CodeSigning -CertStoreLocation "cert:\CurrentUser\My" -FriendlyName "TestCert"
참고로 다음의 글은 makecert를 이용하는 방법을 설명합니다.
How to Create Certificate and SHA-256 XML Signatures?
; https://learnfreecoding.com/how-to-create-certificate-and-sha-256-xml-signatures/
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]