Partilhar via


Protect-CmsMessage

Criptografa o conteúdo usando o formato de sintaxe de mensagem criptográfica.

Sintaxe

ByContent (Predefinição)

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 CMS suportam criptografia e descriptografia de conteúdo usando o formato IETF, conforme documentado pelo 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 compartilhada amplamente e não são dados confidenciais. Se algum conteúdo for encriptado com esta chave pública, apenas a sua chave privada pode desencriptar. 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 uma ID exclusiva de uso de chave estendida (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 documentos, 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 de assunto para seu nome, e-mail ou outro identificador e salve o certificado em um arquivo (como "DocumentEncryption.inf", como mostrado neste exemplo).

Exemplo 2: Criptografar uma mensagem enviada por e-mail

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

No exemplo a seguir, você criptografa uma mensagem, "Hello World", canalizando-a para o cmdlet Protect-CmsMessage e, em seguida, salva a mensagem criptografada em uma variável. O parâmetro To usa o valor da linha de assunto no certificado.

Exemplo 3: Exibir certificados de criptografia de documentos

PS C:\> cd Cert:\currentuser\my
Get-ChildItem -DocumentEncryptionCert

Para exibir certificados de criptografia de documento no provedor de certificados, você pode adicionar o parâmetro dinâmico DocumentEncryptionCert de Get-ChildItem, disponível somente quando o provedor de certificados é carregado.

Parâmetros

-Content

Especifica um PSObject que contém 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 Content parâmetro: $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 dos parâmetros

Tipo:PSObject
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

ByContent
Position:1
Obrigatório:True
Valor do pipeline:True
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-LiteralPath

Especifica o caminho para o conteúdo que você deseja criptografar. Ao contrário Path, o valor de LiteralPath é usado exatamente como é digitado. Nenhum caractere é interpretado como carta curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. Aspas simples indicam ao PowerShell para não interpretar quaisquer caracteres como sequências de escape.

Propriedades dos parâmetros

Tipo:String
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

ByLiteralPath
Position:1
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-OutFile

Especifica o caminho e o nome do arquivo para o qual você deseja enviar o conteúdo criptografado.

Propriedades dos parâmetros

Tipo:String
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:2
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Path

Especifica o caminho para o conteúdo que você deseja criptografar.

Propriedades dos parâmetros

Tipo:String
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

ByPath
Position:1
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos: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 do assunto do certificado (usado para procurar no armazenamento de certificados).

Propriedades dos parâmetros

Tipo:

CmsMessageRecipient[]

Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos: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.