Protect-CmsMessage

암호화 메시지 구문 형식을 사용하여 콘텐츠를 암호화합니다.

Syntax

Protect-CmsMessage
       [-To] <CmsMessageRecipient[]>
       [-Content] <PSObject>
       [[-OutFile] <String>]
       [<CommonParameters>]
Protect-CmsMessage
       [-To] <CmsMessageRecipient[]>
       [-Path] <String>
       [[-OutFile] <String>]
       [<CommonParameters>]
Protect-CmsMessage
       [-To] <CmsMessageRecipient[]>
       [-LiteralPath] <String>
       [[-OutFile] <String>]
       [<CommonParameters>]

Description

cmdlet은 Protect-CmsMessage CMS(암호화 메시지 구문) 형식을 사용하여 콘텐츠를 암호화합니다.

CMS cmdlet은 RFC5652 문서화된 대로 IETF 형식을 사용하여 콘텐츠의 암호화 및 암호 해독을 지원합니다.

CMS 암호화 표준은 공개 키 암호화를 사용합니다. 여기서 콘텐츠(공개 키)를 암호화하는 데 사용되는 키와 콘텐츠 암호 해독에 사용되는 키(프라이빗 키)는 별개입니다. 공개 키는 널리 공유할 수 있으며 중요한 데이터가 아닙니다. 이 공개 키로 암호화된 콘텐츠가 있는 경우 프라이빗 키만 암호를 해독할 수 있습니다. 자세한 내용은 공개 키 암호화를 참조하세요.

cmdlet을 Protect-CmsMessage 실행하려면 먼저 암호화 인증서를 설정해야 합니다. PowerShell에서 인식하려면 암호화 인증서를 데이터 암호화 인증서(예: 코드 서명 및 암호화된 메일의 ID)로 식별하려면 고유한 EKU(확장 키 사용) ID가 필요합니다. 문서 암호화에 사용할 인증서의 예는 이 항목의 예제 1을 참조하세요.

Linux 및 macOS에 대한 지원이 PowerShell 7.1에 추가되었습니다.

예제

예제 1: 콘텐츠 암호화를 위한 인증서 만들기

cmdlet을 Protect-CmsMessage 실행하려면 먼저 암호화 인증서를 만들어야 합니다. 다음 텍스트를 사용하여 제목 줄의 이름을 이름, 전자 메일 또는 기타 식별자로 변경하고 인증서를 파일에 저장합니다(예: 이 예제와 같이 DocumentEncryption.inf).

# Create .INF file for certreq
{[Version]
Signature = "$Windows NT$"

[Strings]
szOID_ENHANCED_KEY_USAGE = "2.5.29.37"
szOID_DOCUMENT_ENCRYPTION = "1.3.6.1.4.1.311.80.1"

[NewRequest]
Subject = "cn=youralias@emailaddress.com"
MachineKeySet = false
KeyLength = 2048
KeySpec = AT_KEYEXCHANGE
HashAlgorithm = Sha1
Exportable = true
RequestType = Cert
KeyUsage = "CERT_KEY_ENCIPHERMENT_KEY_USAGE | CERT_DATA_ENCIPHERMENT_KEY_USAGE"
ValidityPeriod = "Years"
ValidityPeriodUnits = "1000"

[Extensions]
%szOID_ENHANCED_KEY_USAGE% = "{text}%szOID_DOCUMENT_ENCRYPTION%"
} | Out-File -FilePath DocumentEncryption.inf

# After you have created your certificate file, run the following command to add
# the certificate file to the certificate store. Now you are ready to encrypt and
# decrypt content with the next two examples.
certreq.exe -new DocumentEncryption.inf DocumentEncryption.cer

예제 2: 전자 메일로 보낸 메시지 암호화

$Protected = "Hello World" | Protect-CmsMessage -To "*youralias@emailaddress.com*"

다음 예제에서는 cmdlet에 파이핑하여 Protect-CmsMessage "헬로 월드" 메시지를 암호화한 다음, 암호화된 메시지를 변수에 저장합니다. To 매개 변수는 인증서의 제목 줄 값을 사용합니다.

예제 3: 문서 암호화 인증서 보기

PS C:\> cd Cert:\CurrentUser\My
PS Cert:\CurrentUser\My> Get-ChildItem -DocumentEncryptionCert

인증서 공급자에서 문서 암호화 인증서를 보려면 인증서 공급자가 로드된 경우에만 사용할 수 있는 Get-ChildItemDocumentEncryptionCert 동적 매개 변수를 추가할 수 있습니다.

매개 변수

-Content

암호화하려는 콘텐츠가 포함된 PSObject를 지정합니다. 예를 들어 이벤트 메시지의 콘텐츠를 암호화한 다음, 메시지가 포함된 변수($Event이 예제에서는)를 Content 매개 변수$event = Get-WinEvent -ProviderName "PowerShell" -MaxEvents 1값으로 사용할 수 있습니다. cmdlet을 Get-Content 사용하여 Microsoft Word 문서와 같은 파일의 내용을 가져와 콘텐츠 매개 변수의 값으로 사용하는 변수에 저장할 수도 있습니다.

Type:PSObject
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

암호화할 콘텐츠의 경로를 지정합니다. Path와 달리 LiteralPath값은 입력된 대로 정확하게 사용됩니다. 어떤 문자도 야생으로 해석되지 카드. 경로에 이스케이프 문자가 포함된 경우 작은따옴표로 묶습니다. 작은따옴표는 PowerShell에 문자를 이스케이프 시퀀스로 해석하지 않도록 지시합니다.

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-OutFile

암호화된 콘텐츠를 보낼 파일의 경로 및 파일 이름을 지정합니다.

Type:String
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

암호화할 콘텐츠의 경로를 지정합니다.

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-To

다음 형식 중 하나로 식별되는 하나 이상의 CMS 메시지 받는 사람을 지정합니다.

  • 인증서 공급자에서 검색된 실제 인증서입니다.
  • 인증서를 포함하는 파일의 경로입니다.
  • 인증서를 포함하는 디렉터리의 경로입니다.
  • 인증서의 지문입니다(인증서 저장소를 찾는 데 사용됨).
  • 인증서의 주체 이름입니다(인증서 저장소를 찾는 데 사용됨).
Type:CmsMessageRecipient[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False