Protect-CmsMessage
Criptografa o conteúdo usando o formato sintaxe de mensagem criptográfica.
Sintaxe
ByContent (Default)
Protect-CmsMessage
[-To] <CmsMessageRecipient[]>
[-Content] <PSObject>
[[-OutFile] <String>]
[<CommonParameters>]
ByPath
Protect-CmsMessage
[-To] <CmsMessageRecipient[]>
[-Path] <String>
[[-OutFile] <String>]
[<CommonParameters>]
ByLiteralPath
Protect-CmsMessage
[-To] <CmsMessageRecipient[]>
[-LiteralPath] <String>
[[-OutFile] <String>]
[<CommonParameters>]
Description
O cmdlet Protect-CmsMessage criptografa o conteúdo usando o formato CMS (Sintaxe de Mensagem Criptográfica).
Os cmdlets do CMS dão suporte à criptografia e à descriptografia de conteúdo usando o formato IETF, conforme documentado por RFC5652.
O padrão de criptografia cms usa criptografia de chave pública, onde as chaves usadas para criptografar conteúdo (a chave pública) e as chaves usadas para descriptografar conteúdo (a chave privada) são separadas. Sua chave pública pode ser amplamente compartilhada e não é dados confidenciais. Se qualquer conteúdo for criptografado com essa chave pública, somente sua chave privada poderá descriptografá-la. Para obter mais informações, consulte criptografia de chave pública.
Antes de executar o cmdlet Protect-CmsMessage, você deve ter um certificado de criptografia configurado.
Para serem reconhecidos no PowerShell, os certificados de criptografia exigem um uso exclusivo de chave estendida (ID dede EKU) para identificá-los como certificados de criptografia de dados (como as IDs para Assinatura de Código e Email Criptografado).
Para obter um exemplo de um certificado que funcionaria para criptografia de documento, consulte o Exemplo 1 neste tópico.
Exemplos
Exemplo 1: criar um certificado para criptografar conteúdo
# 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 -new DocumentEncryption.inf DocumentEncryption.cer
Antes de executar o cmdlet Protect-CmsMessage, você deve criar um certificado de criptografia.
Usando o texto a seguir, altere o nome na linha Assunto para seu nome, email ou outro identificador e salve o certificado em um arquivo (como "DocumentEncryption.inf", conforme mostrado neste exemplo).
Exemplo 2: Criptografar uma mensagem enviada por email
$Protected = "Hello World" | Protect-CmsMessage -To "*youralias@emailaddress.com*"
No exemplo a seguir, você criptografa uma mensagem, "Olá, Mundo", canalizando-a para o cmdlet Protect-CmsMessage e, em seguida, salve a mensagem criptografada em uma variável.
O parâmetro To usa o valor da linha Subject no certificado.
Exemplo 3: exibir certificados de criptografia de documento
PS C:\> cd Cert:\currentuser\my
Get-ChildItem -DocumentEncryptionCert
Para exibir certificados de criptografia de documento no provedor de certificados, você pode adicionar o DocumentEncryptionCert parâmetro dinâmico de Get-ChildItem, disponível somente quando o provedor de certificados é carregado.
Parâmetros
-Content
Especifica um PSObject que contém o conteúdo que você deseja criptografar.
Por exemplo, você pode criptografar o conteúdo de uma mensagem de evento e, em seguida, usar a variável que contém a mensagem ($Event, neste exemplo) como o valor do parâmetro Content: $event = Get-WinEvent -ProviderName "PowerShell" -MaxEvents 1.
Você também pode usar o cmdlet Get-Content para obter o conteúdo de um arquivo, como um documento do Microsoft Word, e salvar o conteúdo em uma variável que você usa como o valor do parâmetro Content.
Propriedades do parâmetro
| Tipo: | PSObject |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
ByContent
| Cargo: | 1 |
| Obrigatório: | True |
| Valor do pipeline: | True |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-LiteralPath
Especifica o caminho para o conteúdo que você deseja criptografar. Diferente de Path, o valor de LiteralPath é usado exatamente como foi digitado. Nenhum caractere é interpretado como caractere curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. Aspas simples indicam ao PowerShell que não deve interpretar nenhum caractere como uma sequência de escape.
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
ByLiteralPath
| Cargo: | 1 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-OutFile
Especifica o caminho e o nome do arquivo de um arquivo para o qual você deseja enviar o conteúdo criptografado.
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | 2 |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-Path
Especifica o caminho para o conteúdo que você deseja criptografar.
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
ByPath
| Cargo: | 1 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-To
Especifica um ou mais destinatários de mensagens CMS, identificados em qualquer um dos seguintes formatos:
- Um certificado real (conforme recuperado do provedor de certificados).
- Caminho para o arquivo que contém o certificado.
- Caminho para um diretório que contém o certificado.
- Impressão digital do certificado (usada para procurar no armazenamento de certificados).
- Nome da entidade do certificado (usado para pesquisar no repositório de certificados).
Propriedades do parâmetro
| Tipo: | CmsMessageRecipient[] |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
CommonParameters
Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.