PowerShell을 사용한 Windows 인증서 관리

Windows 시스템 관리자이면 Windows 인증서와 함께 작업해야 할 수도 있습니다. Windows에서 인증서를 사용하는 것은 일반적으로 시스템 관리자가 맡아야 하는 추가적인 역할 중 하나입니다. Windows 인증서 관리자를 도구로 사용하여 이를 수행할 수 있습니다!

인증서는 유명한 복잡하고 이해하기 어려운 개념입니다. 하지만 이 기사에서는 Windows에서 인증서가 그렇게 무섭지 않다는 것을 알 수 있을 것입니다!

이 기사에서는 주로 Windows에서 인증서 작업에 대해 다룹니다. 일반적으로 인증서가 작동하는 방식에 대해 더 알고 싶다면 이 기사의 동반 자료인 X.509 인증서 튜토리얼 기사를 참조하십시오.

인증서 저장소 이해하기

Windows 인증서 관리자 내에서 모든 인증서는 “인증서 저장소”라고 불리는 논리적인 저장 위치에 존재합니다. 인증서 저장소는 현재 설치된 모든 인증서를 보관하는 “버킷”이며, 인증서는 하나 이상의 저장소에 있을 수 있습니다.

안타깝게도, 인증서 저장소는 작업하기에 가장 직관적인 개념은 아닙니다. 이 기사에서는 이러한 저장소를 구별하는 방법과 작업 방법에 대해 자세히 설명하겠습니다.

각 저장소는 Windows 레지스트리와 파일 시스템에 위치해 있습니다. 자세한 내용은 아래 표를 참조하십시오. 저장소에서 인증서를 작업할 때, 논리적인 저장소와 상호 작용하며 레지스트리나 파일 시스템을 직접 수정하지는 않습니다. 이 간단한 방식을 통해 Windows가 해당 객체를 디스크에 어떻게 표현하는지에 대해 걱정할 필요없이 단일 객체로 작업할 수 있습니다.

인증서 저장소는 물리적 또는 논리적 저장소로 참조될 수 있습니다. 물리적 저장소는 레지스트리 키 또는 파일이 실제로 저장된 파일 시스템 또는 레지스트리 위치를 참조합니다. 논리적 저장소는 하나 이상의 물리적 저장소를 참조하는 동적 참조입니다. 대부분의 일반적인 사용 사례에 대해서는 물리적 저장소보다 논리적 저장소를 사용하는 것이 훨씬 더 쉽습니다.

Windows는 사용자 및 컴퓨터 컨텍스트에서 인증서를 두 가지 다른 영역에 저장합니다. 인증서는 단일 사용자, 여러 사용자 또는 컴퓨터 자체에서 사용되어야 하는지에 따라 이 두 가지 컨텍스트 중 하나에 배치됩니다. 이 문서의 나머지 부분에서는 사용자 및 컴퓨터 컨텍스트의 인증서를 비공식적으로 사용자 인증서 및 컴퓨터 인증서라고 부릅니다.

사용자 인증서

인증서가 단일 사용자에 의해 사용되어야 하는 경우 Windows 인증서 관리자 내의 사용자 인증서 저장소가 이상적입니다. 이는 유선 IEEE 802.1x와 같은 인증 기반 프로세스의 일반적인 사용 사례입니다.

사용자 인증서는 현재 사용자의 프로필 내에 위치하며 해당 사용자의 컨텍스트 내에서만 논리적으로 매핑됩니다. 사용자 인증서는 “매핑”되며 동일한 시스템에서도 각 사용자마다 고유합니다.

컴퓨터 인증서

인증서가 컴퓨터나 시스템 프로세스의 모든 사용자에 의해 사용될 경우, 컴퓨터 컨텍스트 내에 있는 저장소에 배치되어야 합니다. 예를 들어, 웹 서버에서 모든 클라이언트의 통신을 암호화하기 위해 인증서를 사용할 경우, 컴퓨터 컨텍스트의 저장소에 인증서를 배치하는 것이 이상적입니다.

컴퓨터의 인증서 저장소는 논리적으로 모든 사용자 컨텍스트에 매핑됩니다. 이로 인해 컴퓨터 인증서 저장소에 있는 인증서는 개인 키에 대한 구성된 권한에 따라 모든 사용자가 사용할 수 있습니다.

개인 키에 대한 자세한 정보는 “X.509 Certificates Tutorial: A Sysadmin Guide” 문서를 참조하십시오.

컴퓨터 인증서는 로컬 머신 레지스트리 하이브와 프로그램 데이터 폴더에 위치합니다. 사용자 인증서는 현재 사용자 레지스트리 하이브와 앱 데이터 폴더에 위치합니다. 아래에서 각 유형의 저장소가 레지스트리와 파일 시스템에서 어디에 위치하는지에 대한 분석을 볼 수 있습니다.

Context Registry Path Explanation
User HKCU:\SOFTWARE\Microsoft\SystemCertificates\ Physical store for user-specific public keys
User HKCU:\SOFTWARE\Policies\Microsoft\SystemCertificates\ Physical store for user-specific public keys installed by Active Directory (AD) Group Policy Objects (GPOs)
Computer HKLM:\SOFTWARE\Microsoft\SystemCertificates\ Physical store for machine-wide public keys
Computer HKLM:\SOFTWARE\Microsoft\Cryptography\Services\ Physical store for keys associated with a specific service
Computer HKLM:\SOFTWARE\Policies\Microsoft\SystemCertificates\ Physical store for machine-wide public keys installed by GPOs
Computer HKLM:\SOFTWARE\Microsoft\EnterpriseCertificates\ Physical store for machine-wide public keys installed by the Enterprise PKI Containers within an AD domain
Context File Location Explanation
User $env:APPDATA\Microsoft\SystemCertificates\ Physical store for user-specific public keys and pointers to private keys
User $env:APPDATA\Microsoft\Crypto\ Physical store for user-specific private key containers
Computer $env:ProgramData\Microsoft\Crypto\ Physical store for machine-wide private key containers

전제 조건

이 문서의 나머지 부분에서는 Windows 인증서 저장소와 상호작용을 보여주는 여러 예제를 찾을 수 있습니다. 이러한 예제를 재현하려면 다음 전제 조건을 충족해야 합니다:

  • Windows Vista, Windows Server 2008 또는 최신 운영 체제. 표시된 예제는 Windows 10 Enterprise 버전 1903을 사용합니다.
  • PowerShell에 대한 친숙함. 필수는 아니지만, 적절한 경우 인증서를 참조하는 데 사용되는 언어입니다. 표시된 예제는 모두 Windows PowerShell 5.1로 생성되었습니다.
  • 특정 인증서를 설치할 필요는 없지만, 자체 서명된 인증서를 사용하는 것이 유용합니다.

Windows에서 인증서 관리하기

Windows에서는 인증서를 관리하는 세 가지 주요 방법이 있습니다:

  • 인증서 Microsoft Management Console (MMC) 스냅인 (certmgr.msc)
  • PowerShell
  • certutil 명령줄 도구

이 문서에서는 인증서 MMC 스냅인과 PowerShell을 통해 인증서를 관리하는 방법에 대해 알아보겠습니다. certutil을 사용하는 방법에 대해 더 알고 싶다면, Microsoft 문서를 확인해보세요.

PowerShell 대 Windows 보안 인증서 관리자

Windows에서 인증서를 관리하는 방법은 몇 가지가 있으므로, 어떤 방법을 선택해야 할까요? GUI (MMC) 경로를 선택할까요, 아니면 PowerShell과 같은 명령줄 경로를 선택할까요?

참고: 이 문서는 Windows 7 인증서 관리자와 Windows 10 인증서 관리자 MMC 스냅인 모두에 적용됩니다.

먼저, 인증서의 라이프사이클을 고려해야 합니다. 한 번에 하나의 인증서를 설치하거나 제거할 계획이라면, MMC를 사용하는 것이 좋습니다. 그러나 여러 인증서를 관리하거나 동일한 작업을 반복적으로 수행해야 한다면, 명령줄 경로를 선택하는 것이 좋습니다. PowerShell 스크립트 작성 방법을 모르더라도, 다양한 인증서를 관리해야 한다면 배워보는 것이 좋습니다.

먼저, 인증서 관리자와 PowerShell을 사용하여 Windows에 설치된 인증서를 찾는 방법을 살펴보겠습니다.

Windows 인증서 관리자(certmgr.msc) 사용하기

MMC를 사용하여 인증서를 보려면 시작 메뉴를 열고 certmgr.msc를 입력합니다. 이렇게 하면 Windows 인증서 MMC가 열립니다. 이 초기 보기에서는 왼쪽 창에 표시된 모든 논리 저장소의 개요를 제공합니다.

아래 스크린샷에서 보시다시피 신뢰할 수 있는 루트 인증 기관 논리 저장소가 선택되어 있습니다.

Trusted Root Certification Authorities store

물리 저장소 보기

기본적으로 Windows 인증서 관리자는 실제 물리 저장소를 표시하지 않습니다. 저장소를 표시하려면 보기를 클릭한 다음 옵션을 클릭합니다. 그러면 Windows 내에서 특정 경로를 식별하는 데 도움이 되는 옵션을 선택할 수 있습니다.

Figure 2 – The Certificates MMC View Options with Physical certificate stores selected.

이제 이전에 표시된 예제 신뢰할 수 있는 루트 인증 기관 논리 저장소 아래에 추가 컨테이너가 표시됩니다. 인증서는 여전히 논리 저장소에 따라 그룹화되어 있지만 이제 “레지스트리”라는 물리 저장소를 볼 수 있습니다.

Inspecting the physical cert stores

Windows 인증서 관리자에서 속성 검사

MMC로 인증서를 보는 경우 볼 수 있는 많은 인증서 속성이 있습니다. 예를 들어, 특정 인증서를 선택하고자 할 것입니다.

이를 수행하는 가장 쉬운 방법은 인증서의 직렬 번호 또는 썸프린트 확장 값을 참조하는 것입니다. 인증서가 인증 기관(CA)에 의해 서명되었다면 발급 시 직렬 번호가 있을 것입니다. 썸프린트는 인증서가 보여질 때마다 계산됩니다.

아래에서 볼 수 있듯이 MMC에서 인증서를 열어 일부 속성을 확인할 수 있습니다.

Inspecting a Windows certificate

강조할 중요한 기능 중 하나는 내장된 개인 키입니다. Windows에서의 인증서는 해당하는 개인 키를 가질 수도 있습니다. 이러한 개인 키는 암호화된 파일로 해당하는 물리적 저장소에 저장됩니다.

해당하는 개인 키가 있는지 여부를 빠르게 구분하려면 인증서 아이콘을 확인하세요. Windows 인증서 관리자에서, 아이콘이 리본이 달린 종이만 나타난다면 해당하는 개인 키가 없는 것입니다. 인증서에 개인 키가 있는 경우, MMC 아이콘에는 키가 나타나고 인증서를 열 때 일반 탭의 하단에 키가 표시됩니다.

Certificate without an embedded private key

PowerShell 사용

MMC와 마찬가지로 PowerShell을 사용하여 인증서를 보고 관리할 수도 있습니다. 먼저 물리적 저장소(레지스트리 및 파일 시스템)에서 인증서를 검사해 봅시다.

물리적 저장소별

Get-ChildItem PowerShell cmdlet을 사용하여 부모 HKCU:\Software\Microsoft\SystemCertificates\CA\Certificates\ 레지스트리 키 경로 내의 모든 키와 값들을 나열할 수 있습니다.

아래 명령은 현재 로그인된 사용자의 인증서를 중간 인증기관 논리 저장소에서 열거합니다.

Get-ChildItem -Path HKCU:\Software\Microsoft\SystemCertificates\CA\Certificates\

보시는 레지스트리 하이브의 각 항목은 신뢰할 수 있는 CA의 Thumbprint에 해당하는 인증서와 해당 속성의 인증서입니다. 아래에서 이에 대한 예시 출력을 볼 수 있습니다.

Results of the installed certificates from the example commands, limited to the first 5 entries.

다른 일반적인 저장소는 개인 저장소입니다. 이 저장소의 인증서는 레지스트리가 아닌 파일 시스템에 위치해 있습니다. 다음 명령에서는 이러한 다른 물리적 경로와 그 목적을 보여줄 것입니다.

아래 명령으로 반환된 디렉토리의 각 파일은 개인 현재 사용자 저장소에 설치된 인증서에 해당합니다.

Get-ChildItem -Path $env:APPDATA\Microsoft\SystemCertificates\My\Certificates\

아래 명령에서 반환된 각 파일은 키 저장소 제공자(KSP)에 의해 생성된 개인 키 개체에 대한 참조입니다. 파일 이름은 인증서의 주체 키 식별자와 일치합니다. 설치한 각 개인 키에 해당하는 파일이 추가됩니다.

Get-ChildItem -Path $env:APPDATA\Microsoft\SystemCertificates\My\Keys\

아래 명령으로 반환된 디렉토리의 각 파일은 KSP에 의해 생성된 암호화된 개인 키의 고유한 컨테이너입니다. 파일 이름과 인증서 간에는 직접적인 관계가 없지만, 파일은 이전 명령의 포인터의 대상입니다.

Get-ChildItem -Path $env:APPDATA\Microsoft\Crypto\Keys

논리 저장소별로

실제 경로에서 인증서 작업을 하는 것은 일반적이지 않으므로, 나머지 예제에서는 논리적 저장소와 함께 작업하게 될 것입니다.

PowerShell은 Cert: PSDrive를 사용하여 Windows의 논리적 저장소에 액세스할 수 있습니다. Cert: PSDrive는 MMC와 마찬가지로 인증서를 물리적 저장소에 매핑합니다.

그러나 MMC와 Cert PSDrive는 논리적 저장소를 동일하게 라벨링하지 않습니다. 아래에서 MMC와 Cert PSDrive에서의 일반적인 저장소 및 이름의 비교 테이블을 확인할 수 있습니다.

Cert: Certificates MMC
My Personal
Remote Desktop Remote Desktop
Root Trusted Root Certification Authorities
CA Intermediate Certification Authorities
AuthRoot Third-Party Root Certification Authorities
TrustedPublisher Trusted Publishers
Trust Enterprise Trust
UserDS Active Directory User Object
인증서 선택하기

인증서 작업을 수행하기 위해 인증서를 필터링하고 선택해야 할 필요가 있습니다. 대부분의 경우 특정 확장의 값에 기반하여 인증서를 필터링하고 선택합니다.

다음 예제에서는 루트 CA 저장소에 설치된 모든 인증서를 나열하는 것으로 시작해야 합니다.

Get-ChildItem -Path Cert:\CurrentUser\Root\

반환된 개체는 다음 예제에서 사용할 수 있는 인증서 개체입니다.

일반적인 확장은 이미 인증서 개체의 속성으로 사용할 수 있습니다. 아래 예제에서는 Get-Member를 사용하여 반환된 개체의 모든 속성을 나열하는 것입니다.

Get-ChildItem -Path Cert:\CurrentUser\Root\ | Get-Member -MemberType Properties
Figure 9 – The properties available for the returned certificate objects.

그림 9에서 볼 수 있듯이, 발급자와 같은 일부 확장은 찾고 있는 인증서를 찾는 데 도움이 됩니다. 확장은 인증서에 대한 정보를 제공하며, 인증서가 누구에게 발급되었는지, 어떤 용도로 사용될 수 있는지, 그리고 어떤 제한이 있는지와 같은 정보를 제공합니다.

더 복잡한 사용 사례에서는 인증서 템플릿과 같은 다른 확장자로 인증서를 찾고 싶을 것입니다. 어려운 점은 이러한 확장자의 값이 정수 배열로 반환된다는 것입니다. 이 정수들은 ASN.1 인코딩된 내용에 해당합니다.

개체에 사용 가능한 기존 ScriptProperties는 이와 인터페이스하는 예제를 보여줍니다. 아래 명령에서는 Key Usages를 수동으로 추출하여 이 관계를 확인할 것입니다.

((Get-ChildItem -Path Cert:\CurrentUser\Root\ | select -First 1).Extensions | Where-Object {$_.Oid.FriendlyName -eq "Key Usage"}).format($true)

위 명령에서 소개하는 새로운 부분은 format 메서드입니다. 이 메서드는 ASN.1 디코딩을 수행합니다. 반환된 개체를 한 줄 또는 여러 줄로 표시할지를 식별하기 위해 부울 값 (예: $true)을 전달합니다.

아래 명령에서는 Figure 7의 인증서에서 Thumbprint 값을 사용할 것입니다. Thumbprint 값은 PowerShell 변수로 설정되어 해당 명령에서 특정 인증서를 선택하는 데 사용됩니다.

$thumb = "cdd4eeae6000ac7f40c3802c171e30148030c072"
Get-ChildItem -Path Cert:\CurrentUser\Root\ | Where-Object {$_.Thumbprint -eq $thumb}

PowerShell을 사용하여 자체 서명된 인증서 만들기

PowerShell은 New-SelfSignedCertificate cmdlet을 사용하여 자체 서명된 인증서를 생성할 수 있습니다. 자체 서명된 인증서는 CA를 사용하지 않고도 공개 및 개인 키 쌍을 생성할 수 있어 테스트에 유용합니다.

이제 현재 사용자 및 로컬 컴퓨터 저장소에 자체 서명된 인증서를 생성하여 다음 단계의 예제에 사용해 보겠습니다.

아래 예제에서 PowerShell은 공개 및 개인 키 쌍, 자체 서명된 인증서를 생성하고 모든 것을 적절한 인증서 저장소에 설치합니다.

PS51> New-SelfSignedCertificate -Subject 'User-Test' -CertStoreLocation 'Cert:\CurrentUser\My'
PS51> New-SelfSignedCertificate -Subject 'Computer-Test' -CertStoreLocation 'Cert:\LocalMachine\My'

생산 서비스에 자체 서명된 인증서를 사용하는 것은 권장되지 않습니다. 모든 신뢰 기반 메커니즘이 존재하지 않기 때문입니다.

인증서 가져오기/내보내기

공개 키 암호화는 공개 키가 널리 액세스 가능해야 한다는 기본 원칙에 기초합니다. 따라서 효과적으로 인증서를 공유하기 위해 표준 방법이 필요합니다. 또한 개인 키의 보안도 중요합니다. 액세스할 수 없는 매체에 개인 키를 저장하거나 재해 복구 자료와 함께 보관하는 것은 특정 개인 키에 대한 일반적인 관행입니다.

이러한 두 가지 요구 사항은 이러한 암호 객체를 표준 형식으로 저장하는 방법을 필요로 합니다. 내보내기는 이러한 객체를 저장하고 널리 인정받는 표준 파일 형식을 사용하도록 보장하는 기능을 제공합니다. 가져오기는 암호 객체를 Windows 운영 체제로 가져올 수 있도록 합니다.

Windows 인증서 관리자(certmgr.msc) 사용하기

MMC에서 인증서를 내보내는 것은 비교적 간단합니다. 인증서를 내보내려면 MMC에서 해당 인증서를 클릭한 다음 모든 작업 메뉴를 클릭한 다음 내보내기를 클릭하면 됩니다.

내보내기 중에 아래에 표시된 대로 파일 형식을 입력해야 합니다. 가장 일반적인 옵션은 DER 또는 Base-64 인코딩입니다.

Figure 10 – Exporting a certificate with no private key or one that is marked as not exportable.

개인 키 내보내기

관련된 개인 키를 포함한 인증서를 내보내려면 두 가지 기준을 충족해야 합니다. 로그인한 계정이 개인 키에 대한 권한을 갖고 있어야 하며(컴퓨터 인증서에만 해당), 개인 키는 내보낼 수 있도록 표시되어야 합니다.

로컬 컴퓨터의 개인 키에 대한 권한을 확인하려면 개인 키가 있는 인증서를 선택한 후, Certificates MMC에서 All Tasks를 선택하고 Manage Private Keys를 선택합니다. 열리는 대화 상자에서 개인 키에 대한 액세스 제어 항목이 표시됩니다.

The Basic Security Property Page for the private keys of a certificate with the Subject of ServerName.

이러한 두 가지 또는 세 가지 사전 조건이 충족되면 인증서를 선택하고 All Tasks를 클릭한 다음 Export를 클릭할 수 있습니다. 이는 공개 키만 있는 인증서와 같이 작동합니다. 내보내기 후에는 아래에 표시된 대로 예, 개인 키를 내보냅니다 옵션을 선택할 수 있어야 합니다.

Certificate Export Wizard with exportable private key.

Windows에서 개인 키를 내보낼 때는 파일을 PFX 형식으로만 저장할 수 있습니다. 이 파일 형식과 인코딩 형식에 대한 자세한 내용은 이 게시물에서 자세히 설명되어 있습니다.

내보내기 마법사에 표시된 나머지 설정에 대해서는 기본값을 사용할 수 있습니다. 아래 표는 각각에 대한 간단한 설명입니다.

Setting Description
Including all certificates in the certification path if possible Helps with portability of certificate issuers, and includes all pertinent public keys in the PFX
Delete the private key if the export is successful Removes the private key from the file and has few common use cases, but one example is to test access to private keys
Export all extended properties Will include any extensions within the current certificate, these relate to the certificates [specific settings]() for Windows interfaces
Enable certificate privacy Normally only the private key will be encrypted in the exported PFX file, this setting encrypts the entire contents of the PFX file
Group or user names You can use a group or user security principal from Active Directory for encrypting the contents of the PFX file, but a password is the most portable option across legacy systems or computers not joined to the same domain

인증서 가져오기

지원되는 모든 인증서 파일 유형에 대해 가져오기 기능은 동일합니다. 유일한 차이점은 파일에 개인 키가 포함되어 있는 경우 “이 키를 내보낼 수 있음”을 선택할 수 있다는 점입니다. Windows는 인증서 가져오기 마법사를 활용합니다.

Figure 12 – Certificate Import Wizard with a PFX file.

PFX에 대해 인증서 가져오기 마법사를 사용할 때는 개인 키를 암호화하는 데 사용된 비밀번호를 제공해야 합니다. 다음은 가져오기 옵션에 대한 요약입니다.

Setting Description
Enable strong private key protection Requires a password for each access of a private key, be cautious of newer functions as they will not be supported in all software
Mark this key as exportable You should try to avoid using this setting on any end system, private keys should be treated similarly to storing passwords
Protect private key using [virtualization-based security] The setting provides more security functionality for protecting private keys from advanced malware attacks
Include all extended properties Relates to the same Windows-specific settings discussed as with exporting

PowerShell 코드 서명 인증서는 강력한 개인 키 보호의 좋은 사용 사례입니다.

인증서의 자동 배치는 조심해야 할 사항일 수 있습니다. 수동으로 인증서 저장소를 선택하는 것이 가장 좋은 결과를 얻을 수 있습니다.

PowerShell을 사용하여

이제, 이전에 생성한 자체 서명 인증서 중 하나를 PowerShell을 통해 내보냅니다. 이 예제에서는 현재 사용자를 사용하지만, 어느 쪽이든 사용할 수 있습니다.

아래에서는 발급자와 주체가 일치하는 자체 서명 인증서를 현재 사용자 개인 논리 저장소에서 선택하는 것입니다.

$certificate = Get-Item (Get-ChildItem -Path Cert:\CurrentUser\My\ | Where-Object {$_.Subject -eq $_.Issuer}).PSPath

인증서를 선택한 후, 아래의 Export-Certificate 명령을 사용하여 DER 인코딩 파일을 저장할 수 있습니다.

Export-Certificate -FilePath $env:USERPROFILE\Desktop\certificate.cer -Cert $certificate

이제 개인 키를 내보내는 것을 살펴보겠습니다. 아래에서는 선택한 인증서에 개인 키가 있는지 확인합니다. 이 값이 true를 반환하지 않으면 Get-Item 명령이 잘못된 인증서를 선택한 것입니다.

$certificate.HasPrivateKey

아래에서는 개인 키를 암호화하는 데 사용할 암호를 설정합니다. 그런 다음 선택한 인증서를 PFX 파일로 내보내고 이전에 입력한 암호를 사용하여 파일을 암호화합니다.

$pfxPassword = "ComplexPassword!" | ConvertTo-SecureString -AsPlainText -Force
Export-PfxCertificate -FilePath $env:USERPROFILE\Desktop\certificate.pfx -Password $pfxPassword -Cert $certificate

내보내기와 마찬가지로, 인증서를 가져오는 데 사용되는 명령어와 PFX 파일을 가져오는 데 사용되는 명령어가 두 가지 있습니다.

아래의 Import-Certificate 명령은 이전에 내보낸 DER 인코딩 파일을 현재 사용자의 개인 저장소에 가져옵니다.

Import-Certificate -FilePath $env:USERPROFILE\Desktop\certificate.cer -CertStoreLocation Cert:\CurrentUser\My

해당 인증서의 개인 키도 설치하려고 한다고 가정해 봅시다.

$pfxPassword = "ComplexPassword!" | ConvertTo-SecureString -AsPlainText -Force
Import-PfxCertificate -Exportable -Password $pfxPassword -CertStoreLocation Cert:\CurrentUser\My -FilePath $env:USERPROFILE\Desktop\certificate.pfx

비밀번호는 보안 문자열이어야 함을 기억하세요. 또한, 로컬 컴퓨터 저장소 (예: Cert:\LocalMachine\)에 가져오는 경우 관리자 권한으로 명령을 실행해야 합니다.

위의 예시에서는 명령과 함께 Exportable 매개변수를 사용하여 개인 키를 향후 내보낼 수 있도록 표시합니다. 기본값은 내보낼 수 없습니다. 내보낼 수 있는 개인 키는 보안 고려 사항이며, 어떻게 보안하는지에 대해 더 많은 주의가 필요합니다.

Windows에서 인증서와 관련된 다른 작업도 많으므로 더 탐색해야 합니다.

PowerShell을 사용하여 인증서 제거하기

인증서를 제거할 때는 재활용 통이 없음을 염두에 두어야 합니다. 인증서를 삭제하면 영구히 삭제됩니다. 따라서 일련 번호 또는 Thumbprint 확장 값과 같은 고유 식별자를 확인하여 올바른 인증서를 삭제하는지 확인하는 것이 매우 중요합니다.

위와 마찬가지로 아래의 명령에서는 현재 사용자의 개인 저장소에서 자체 서명된 인증서를 선택합니다.

$certificate = Get-Item (Get-ChildItem -Path Cert:\CurrentUser\My\ | Where-Object {$_.Subject -eq $_.Issuer}).PSPath

아래에서 선택한 인증서의 Thumbprint, 일련 번호 및 주체 속성을 확인하여 올바른 인증서를 선택하는지 확인할 수 있습니다.

$certificate.Thumbprint
$certificate.SerialNumber
$certificate.Subject

올바른 삭제할 인증서를 선택했는지 확인하세요.

아래 명령은 모든 선택된 인증서 개체를 제거합니다. 신중하게 사용하세요. 아래 명령에서 $certificate 개체를 파이프라인을 통해 Remove-Item cmdlet에 전달하면 검증 프롬프트 없이 모든 인증서 내용을 삭제할 수 있습니다.

$certificate | Remove-Item

요약

이 문서에서는 Windows에서 인증서에 대해 작업하는 방법과 작업 시 사용할 수 있는 몇 가지 도구에 대해 알아보았습니다. 특정 서비스와 설치된 인증서를 연결하는 방법이나 자체 인증 기관 (CA)을 배포하여 개인 공개 키 인프라 (PKI)를 구현하는 방법과 같은 주제에 대해 더 알아볼 수 있습니다.

추가 자료

Source:
https://adamtheautomator.com/windows-certificate-manager/