Protect-CmsMessage
Cifra el contenido mediante el formato de sintaxis de mensajes criptográficos.
Sintaxis
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
El Protect-CmsMessage
cmdlet cifra el contenido mediante el formato de sintaxis de mensajes criptográficos (CMS).
Los cmdlets de CMS admiten el cifrado y el descifrado del contenido mediante el formato IETF tal como se documenta en RFC5652.
El estándar de cifrado cmS usa criptografía de clave pública, donde las claves usadas para cifrar el contenido (la clave pública) y las claves usadas para descifrar contenido (la clave privada) son independientes. La clave pública se puede compartir y no se considera información confidencial. Si cualquier contenido está cifrado con esta clave pública, solo su clave privada puede descifrarlo. Para obtener más información, consulte Public-key cryptography (Criptografía mediante claves públicas).
Para poder ejecutar el Protect-CmsMessage
cmdlet, debe tener configurado un certificado de cifrado.
Para que se reconozca en PowerShell, los certificados de cifrado requieren un identificador de uso de clave extendida (EKU) único para identificarlos como certificados de cifrado de datos (como los identificadores para la firma de código y el correo cifrado). Para obtener un ejemplo de un certificado que funcionaría para el cifrado de documentos, vea el ejemplo 1 de este tema.
Se ha agregado compatibilidad con Linux y macOS en PowerShell 7.1.
Ejemplos
Ejemplo 1: Crear un certificado para cifrar contenido
Para poder ejecutar el Protect-CmsMessage
cmdlet, debe crear un certificado de cifrado. Con el texto siguiente, cambie el nombre de la línea Asunto por su nombre, correo electrónico u otro identificador y guarde el certificado en un archivo (como DocumentEncryption.inf
, como se muestra en este ejemplo).
# 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
Ejemplo 2: Cifrado de un mensaje enviado por correo electrónico
$Protected = "Hello World" | Protect-CmsMessage -To "*youralias@emailaddress.com*"
En el ejemplo siguiente, se cifra un mensaje, "Hola mundo", canalizandolo al cmdlet y, a Protect-CmsMessage
continuación, guarda el mensaje cifrado en una variable. El parámetro To usa el valor de la línea Subject del certificado.
Ejemplo 3: Visualización de certificados de cifrado de documentos
PS C:\> cd Cert:\CurrentUser\My
PS Cert:\CurrentUser\My> Get-ChildItem -DocumentEncryptionCert
Para ver los certificados de cifrado de documentos en el proveedor de certificados, puede agregar el parámetro dinámico DocumentEncryptionCert de Get-ChildItem, disponible solo cuando se carga el proveedor de certificados.
Parámetros
-Content
Especifica un PSObject que contiene contenido que desea cifrar. Por ejemplo, puede cifrar el contenido de un mensaje de evento y, a continuación, usar la variable que contiene el mensaje ($Event
, en este ejemplo) como el valor del parámetro Content : $event = Get-WinEvent -ProviderName "PowerShell" -MaxEvents 1
. También puede usar el Get-Content
cmdlet para obtener el contenido de un archivo, como un documento de Microsoft Word, y guardar el contenido en una variable que use como valor del parámetro Content .
Tipo: | PSObject |
Posición: | 1 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-LiteralPath
Especifica la ruta de acceso al contenido que desea cifrar. A diferencia de Path, el valor de LiteralPath se usa exactamente como se escribe. Ninguno de los caracteres se interpreta como caracteres comodín. Si la ruta de acceso contiene caracteres de escape, escríbalos entre comillas simples. Las comillas simples indican a PowerShell que no interprete ningún carácter como secuencias de escape.
Tipo: | String |
Posición: | 1 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-OutFile
Especifica la ruta de acceso y el nombre de archivo de un archivo al que desea enviar el contenido cifrado.
Tipo: | String |
Posición: | 2 |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Path
Especifica la ruta de acceso al contenido que desea cifrar.
Tipo: | String |
Posición: | 1 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-To
Especifica uno o varios destinatarios del mensaje CMS, identificados en cualquiera de los siguientes formatos:
- Un certificado real (como se recuperó del proveedor de certificados).
- Ruta de acceso al archivo que contiene el certificado.
- Ruta de acceso a un directorio que contiene el certificado.
- Huella digital del certificado (que se usa para buscar en el almacén de certificados).
- Nombre del firmante del certificado (que se usa para buscar en el almacén de certificados).
Tipo: | CmsMessageRecipient[] |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |