Asignación de certificados de empresaEnterprise Certificate Pinning

Se aplica aApplies to

  • Windows 10Windows 10

La asignación de certificados de empresa es una característica de Windows para recordar o "asignar" una entidad emisora de certificados raíz o certificado de entidad final a un nombre de dominio dado.Enterprise certificate pinning is a Windows feature for remembering, or “pinning,” a root issuing certificate authority or end entity certificate to a given domain name. La asignación de certificados de ayuda a reducir los ataques de tipo "Man in the middle" al permitirte proteger los nombres de dominio internos contra certificados de encadenamiento o no deseados o contra certificados emitidos de forma fraudulenta.Enterprise certificate pinning helps reduce man-in-the-middle attacks by enabling you to protect your internal domain names from chaining to unwanted certificates or to fraudulently issued certificates.

Nota

Los nombres de dominio externo, donde entidad de certificación pública emite el certificado emitido para estos dominios, no son ideales para la asignación de certificados de empresa.External domain names, where the certificate issued to these domains is issued by a public certificate authority, are not ideal for enterprise certificate pinning.

Las API de certificado de Windows (CertVerifyCertificateChainPolicy y WinVerifyTrust) se actualizan para comprobar si la cadena de certificados de autenticación de servidores del sitio coincide con un conjunto restringido de certificados.Windows Certificate APIs (CertVerifyCertificateChainPolicy and WinVerifyTrust) are updated to check if the site’s server authentication certificate chain matches a restricted set of certificates. Estas restricciones se encapsulan en una lista de certificado de confianza (CTL) de reglas de asignación, que está configurada e implementada en equipos con Windows10.These restrictions are encapsulated in a Pin Rules Certificate Trust List (CTL) that is configured and deployed to Windows 10 computers. El certificado de cualquier sitio que desencadene un error de coincidencia de nombre hace que Windows escriba un evento en el registro de eventos CAPI2 e impide que el usuario navegue al sitio web con Microsoft Edge o Internet Explorer.Any site certificate triggering a name mismatch causes Windows to write an event to the CAPI2 event log and prevents the user from navigating to the web site using Microsoft Edge or Internet Explorer.

ImplementaciónDeployment

Para implementar la asignación de certificados de empresa, debes:To deploy enterprise certificate pinning, you need to:

  • Crear un archivo XML de reglas de asignación de certificados con formato correcto.Create a well-formatted certificate pinning rule XML file
  • Crear un archivo de lista de certificados de confianza de reglas de asignación a partir del archivo XML.Create a pin rules certificate trust list file from the XML file
  • Aplicar el archivo de lista de certificados de confianza de reglas de asignación a un equipo administrador de referencia.Apply the pin rules certificate trust list file to a reference administrative computer
  • Implementar la configuración del registro en el equipo de referencia mediante la Consola de administración de directivas de grupo (GPMC), que se incluye en las Herramientas de administración remota del servidor (RSAT).Deploy the registry configuration on the reference computer using Group Policy Management Console (GPMC), which is included in the Remote Server Administration Tools (RSAT).

Crear un archivo XML de las reglas de asignaciónCreate a Pin Rules XML file

El archivo de reglas de asignación basado en XML consta de una secuencia de elementos PinRule.The XML-based pin rules file consists of a sequence of PinRule elements. Cada elemento PinRule contiene una secuencia de uno o más elementos Site y una secuencia de cero o más elementos Certificate.Each PinRule element contains a sequence of one or more Site elements and a sequence of zero or more Certificate elements.

<PinRules ListIdentifier="PinRulesExample" Duration="P28D">

  <PinRule Name="AllCertificateAttributes" Error="None" Log="true">
    <Certificate File="Single.cer"/>
    <Certificate File="Multiple.p7b"/>
    <Certificate File="Multiple.sst"/>
    <Certificate Directory="Multiple"/>
    <Certificate Base64="MIIBy … QFzuM"/>
    <Certificate File="WillExpire.cer" EndDate="2015-05-12T00:00:00Z"/>
    <Site Domain="xyz.com"/>
  </PinRule>

  <PinRule Name="MultipleSites" Log="false">
    <Certificate File="Root.cer"/>
    <Site Domain="xyz.com"/>
    <Site Domain=".xyz.com"/>
    <Site Domain="*.abc.xyz.com" AllSubdomains="true"/>
    <Site Domain="WillNormalize.com"/>
  </PinRule>

</PinRules>

Elemento PinRulesPinRules Element

El elemento PinRules puede tener los atributos siguientes.The PinRules element can have the following attributes. Para obtener ayuda con el formato de las reglas de asignación, consulta Representar una fecha en XML o Representar una duración en XML.For help with formatting Pin Rules, see Representing a Date in XML or Representing a Duration in XML.

AtributoAttribute DescripciónDescription ObligatorioRequired
Duration o NextUpdateDuration or NextUpdate Especifica cuándo expirarán las reglas de asignación.Specifies when the Pin Rules will expire. Uno es obligatoria.Either is required. NextUpdate tiene prioridad si se especifican ambos.NextUpdate takes precedence if both are specified.
Duración, declarado como un tipo de datos XML TimeSpan, no admite años y meses.Duration, represented as an XML TimeSpan data type, does not allow years and months. El atributo NextUpdate se declara como un tipo de datos XML DateTime en hora UTC.You represent the NextUpdate attribute as a XML DateTime data type in UTC.
¿Es obligatorio?Required? Sí.Yes. Al menos uno es obligatorio.At least one is required.
LogDuration o LogEndDateLogDuration or LogEndDate Configura que la auditoría solo se extenderá más allá de la expiración del cumplimiento de las reglas de asignación.Configures auditing only to extend beyond the expiration of enforcing the Pin Rules.
LogEndDate, declarado como una tipo de datos XML DateTime en hora UTC, tiene precedencia si se especifican ambos.LogEndDate, represented as an XML DateTime data type in UTC, takes precedence if both are specified.
LogDuration se declara como un tipo de datos XML TimeSpan, que no admite años y meses.You represent LogDuration as an XML TimeSpan data type, which does not allow years and months.
Si no se especifica ninguno de los atributos, la expiración de la auditoría usará los atributos Duration o NextUpdate.If neither attribute is specified, auditing expiration uses Duration or NextUpdate attributes.
No.No.
ListIdentifierListIdentifier Proporciona un nombre descriptivo para la lista de reglas de asignación.Provides a friendly name for the list of pin rules. Windows no usa este atributo para la aplicación de la asignación de certificados; sin embargo, se incluye cuando las reglas de asignación se convierten en una lista de certificados de confianza (CTL).Windows does not use this attribute for certificate pinning enforcement, however it is included when the pin rules are converted to a certificate trust list (CTL). No.No.

Elemento PinRulePinRule Element

El elemento PinRule puede tener los atributos siguientes:The PinRule element can have the following attributes.

AtributoAttribute DescripciónDescription ObligatorioRequired
NameName Identifica la PinRule de manera exclusiva.Uniquely identifies the PinRule. Windows usa este atributo para identificar el elemento en caso de un error de análisis o de una salida detallada.Windows uses this attribute to identify the element for a parsing error or for verbose output. El atributo no está incluido en la lista de certificados de confianza (CTL) generada.The attribute is not included in the generated certificate trust list (CTL). Sí.Yes.
ErrorError Describe la acción que realiza Windows cuando encuentra un error de coincidencia de PIN.Describes the action Windows performs when it encounters a PIN mismatch. Puede elegir entre los siguientes valores de cadena:You can choose from the following string values:
- Revoked: Windows denuncia el certificado que protege el sitio como si estuviera revocado.- Revoked - Windows reports the certificate protecting the site as if it was revoked. Normalmente esto impide que el usuario acceda al sitio.This typically prevents the user from accessing the site.
- InvalidName: Windows denuncia el certificado que protege el sitio como si el nombre en el certificado no coincidiera con el nombre en el sitio.- InvalidName - Windows reports the certificate protecting the site as if the name on the certificate does not match the name of the site. Normalmente esto hace que se pregunte al usuario antes de acceder al sitio.This typically results in prompting the user before accessing the site.
- None: el valor predeterminado.- None - The default value. No se devuelve ningún error.No error is returned. Puedes usar esta configuración para auditar las reglas de asignación sin introducir ninguna fricción con el usuario.You can use this setting to audit the pin rules without introducing any user friction.
No.No.
LogLog Un valor booleano que se representa como cadena y es igual a true o false.A Boolean value represent as string that equals true or false. De manera predeterminada, el registro está habilitado (true).By default, logging is enabled (true). No.No.

Elemento CertificateCertificate element

El elemento Certificate puede tener los atributos siguientes:The Certificate element can have the following attributes.

AtributoAttribute DescripciónDescription RequeridoRequired
ArchivoFile Ruta de acceso a un archivo que contiene uno o más certificados.Path to a file containing one or more certificates. Donde los certificados pueden codificarse como:Where the certificate(s) can be encoded as:
-.Certificado único- single certificate
- p7b- p7b
- sst- sst
Estos archivos también pueden tener el formato Base64.These files can also be Base64 formatted. Todos los elementos Site que se incluyen en el mismo elemento PinRule pueden coincidir con cualquiera de estos certificados.All Site elements included in the same PinRule element can match any of these certificates.
Sí (debe estar presente File, Directory o Base64).Yes (File, Directory or Base64 must be present).
DirectoryDirectory Ruta de acceso a un directorio que contiene uno o varios de los archivos de certificado anteriores.Path to a directory containing one or more of the above certificate files. Omite los archivos que no contienen ningún certificado.Skips any files not containing any certificates. Sí (debe estar presente File, Directory o Base64).Yes (File, Directory or Base64 must be present).
Base64Base64 Certificados codificados con Base64.Base64 encoded certificate(s). Donde los certificados pueden codificarse como:Where the certificate(s) can be encoded as:
-.Certificado único- single certificate
- p7b- p7b
- sst- sst
Esto permite incluir los certificados en el archivo XML sin una dependencia del directorio de archivos.This allows the certificates to be included in the XML file without a file directory dependency.
Nota:Note:
Puedes usar certutil-encode para convertir un archivo .cer en base64.You can use certutil -encode to convert a .cer file into base64. A continuación, puedes usar el Bloc de notas para copiar el certificado codificado en base64 y pegarlo en la regla de asignación.You can then use Notepad to copy and paste the base64 encoded certificate into the pin rule.
Sí (debe estar presente File, Directory o Base64).Yes (File, Directory or Base64 must be present).
EndDateEndDate Te permite configurar una fecha de expiración para cuando el certificado ya no sea válido en la regla de asignación.Enables you to configure an expiration date for when the certificate is no longer valid in the pin rule.
Si estás en el proceso de cambiar a una nueva entidad de certificación raíz, puedes establecer EndDate para permitir la coincidencia de certificados de este elemento.If you are in the process of switching to a new root or CA, you can set the EndDate to allow matching of this element’s certificates.
Si la hora actual es posterior a EndDate, luego, al crear la lista de certificados de confianza (CTL), el analizador envía un mensaje de advertencia y excluye los certificados de la regla de asignación de la CTL generada.If the current time is past the EndDate, then, when creating the certificate trust list (CTL), the parser outputs a warning message and exclude the certificate(s) from the Pin Rule in the generated CTL.
Para obtener ayuda con el formato de las reglas de asignación, consulta Representar una fecha en XML.For help with formatting Pin Rules, see Representing a Date in XML.
No.No.

Elemento SiteSite element

El elemento Site puede tener los atributos siguientes:The Site element can have the following attributes.

AtributoAttribute DescripciónDescription RequeridoRequired
DomainDomain Contiene el nombre DNS que debe coincidir para esta regla de asignación.Contains the DNS name to be matched for this pin rule. Al crear la lista de certificados de confianza, el analizador normaliza el valor de cadena de nombre de entrada como sigue:When creating the certificate trust list, the parser normalizes the input name string value as follows:
- Si el nombre DNS tiene un "*" inicial, se quita.- If the DNS name has a leading "*" it is removed.
- El nombre DNS que no sea ASCII se convierte en ASCII Punycode.- Non-ASCII DNS name are converted to ASCII Puny Code.
- Los caracteres ASCII en mayúsculas se convierten en minúsculas.- Upper case ASCII characters are converted to lower case.
Si el nombre normalizado tiene un "." inicial, se habilita la coincidencia de etiqueta izquierda comodín.If the normalized name has a leading ".", then, wildcard left hand label matching is enabled. Por ejemplo, ".xyz.com" coincidirá con "abc.xyz.com".For example, ".xyz.com" would match "abc.xyz.com".
Sí.Yes.
AllSubdomainsAllSubdomains De manera predeterminada, la coincidencia de etiqueta izquierda comodín está restringida a una única etiqueta izquierda.By default, wildcard left hand label matching is restricted to a single left hand label. Este atributo se puede establecer en "true" para habilitar comodines que coincidan con todas las etiquetas izquierdas.This attribute can be set to "true" to enable wildcard matching of all of the left-hand labels.
Por ejemplo, al establecer este atributo también se hará que "123.abc.xyz.com" coincida con el valor de dominio ".xyz.com".For example, setting this attribute would also match "123.abc.xyz.com" for the ".xyz.com" domain value.
No.No.

Crear una lista de certificados de confianza de reglas de asignaciónCreate a Pin Rules Certificate Trust List

La utilidad de línea de comandos, Certutil.exe, incluye el argumento generatePinRulesCTL para analizar el archivo XML y generar la lista de certificados de confianza (CTL) codificada que agregas al equipo de referencia con Windows10, versión1703 e implementaciones posteriores.The command line utility, Certutil.exe, includes the generatePinRulesCTL argument to parse the XML file and generate the encoded certificate trust list (CTL) that you add to your reference Windows 10 version 1703 computer and subsequently deploy. La sintaxis de uso es:The usage syntax is:

CertUtil [Options] -generatePinRulesCTL XMLFile CTLFile [SSTFile]
  Generate Pin Rules CTL
    XMLFile -- input XML file to be parsed.
    CTLFile -- output CTL file to be generated.
    SSTFile -- optional .sst file to be created.
         The .sst file contains all of the certificates
         used for pinning.

Options:
  -f                -- Force overwrite
  -v                -- Verbose operation

Los mismos certificados pueden presentarse en varios elementos PinRule.The same certificate(s) can occur in multiple PinRule elements. El mismo dominio puede presentarse en varios elementos PinRule.The same domain can occur in multiple PinRule elements. Certutil fusiona estos en la lista de certificados de confianza de reglas de asignación resultante.Certutil coalesces these in the resultant pin rules certificate trust list.

Certutil.exe no aplica estrictamente la definición de esquema XML.Certutil.exe does not strictly enforce the XML schema definition. Lleva a cabo lo siguiente para permitir que otras herramientas agreguen o consuman sus propios elementos y atributos específicos:It does perform the following to enable other tools to add/consume their own specific elements and attributes:

  • Omite los elementos antes y después del elemento PinRules.Skips elements before and after the PinRules element.
  • Omite cualquier elemento que no coincida con Certificate o Site dentro del elemento PinRules.Skips any element not matching Certificate or Site within the PinRules element.
  • Omite los atributos que no coinciden con los nombres anteriores para cada tipo de elemento.Skips any attributes not matching the above names for each element type.

Usa el comando certutil con el argumento generatePinRulesCTL junto con el archivo XML que contiene tus reglas de asignación de certificados.Use the certutil command with the generatePinRulesCTL argument along with your XML file that contains your certificate pinning rules. Por último, proporciona el nombre de un archivo de salida que incluya las reglas de asignación de certificados en forma de una lista de certificados de confianza.Lastly, provide the name of an output file that will include your certificate pinning rules in the form of a certificate trust list.

certutil -generatePinRulesCTL certPinRules.xml pinrules.stl

Aplicar reglas de asignación de certificados a un equipo de referenciaApplying Certificate Pinning Rules to a Reference Computer

Ahora que las reglas de asignación de certificados tienen el formato de lista de certificados de confianza, debes aplicar la configuración a un equipo de referencia como requisito previo para implementar la configuración en la empresa.Now that your certificate pinning rules are in the certificate trust list format, you need to apply the settings to a reference computer as a prerequisite to deploying the setting to your enterprise. Para simplificar la configuración de implementación, es mejor aplicar las reglas de asignación de certificados en un equipo que tenga la Consola de administración de directivas de grupo (GPMC) que se incluye en las Herramientas de administración remota del servidor (RSAT).To simplify the deployment configuration, it is best to apply your certificate pinning rules to a computer that has the Group Policy Management Console (GPMC) that is include in the Remote Server Administration Tools (RSAT).

Usa certutil.exe para aplicar las reglas de asignación de certificados en el equipo de referencia con el argumento setreg.Use certutil.exe to apply your certificate pinning rules to your reference computer using the setreg argument. El argumento setreg toma un argumento secundario que determina la ubicación de dónde certutil escribe las reglas de asignación de certificados.The setreg argument takes a secondary argument that determines the location of where certutil writes the certificate pining rules. Este argumento secundario es chain\PinRules.This secondary argument is chain\PinRules. El último argumento que proporcionas es el nombre de archivo que contiene tus reglas de asignación de certificados en el formato de lista de certificados de confianza (.stl).The last argument you provide is the name of file that contains your certificate pinning rules in certificate trust list format (.stl). El nombre del archivo se pasa como último argumento; sin embargo, tienes que agregar un prefijo al nombre de archivo con el símbolo "@", tal como se muestra en el siguiente ejemplo.</span><span class="sxs-lookup">You’ll pass the name of the file as the last argument; however, you need to prefix the file name with the '@' symbol as shown in the following example. Debes ejecutar este comando desde un símbolo del sistema con privilegios elevados.You need to perform this command from an elevated command prompt.

Certutil -setreg chain\PinRules @pinrules.stl 

Certutil escribe la información binaria en la ubicación del Registro siguiente:Certutil writes the binary information to the following registration location:

NombreName ValorValue
ClaveKey HKLM\SOFTWARE\Microsoft\Cryptography\OID\EncodingType0\CertDllCreateCertificateChainEngine\ConfigHKLM\SOFTWARE\Microsoft\Cryptography\OID\EncodingType0\CertDllCreateCertificateChainEngine\Config
NombreName PinRulesPinRules
ValorValue Contenido binario del archivo de lista de certificados de confianza de las reglas de asignación de certificadosBinary contents from the certificate pin rules certificate trust list file
Tipo de datosData type REG_BINARYREG_BINARY

Información binaria del Registro

Implementar la configuración de regla de asignación de empresa mediante directiva de grupoDeploying Enterprise Pin Rule Settings using Group Policy

Has creado correctamente un archivo XML de reglas de asignación de certificados.You’ve successfully created a certificate pinning rules XML file. A partir el archivo XML, has creado un archivo de lista de confianza de asignación de certificados, y has aplicado el contenido de ese archivo al equipo de referencia desde el que puedes ejecutar la Consola de administración de directivas de grupo.From the XML file you have created a certificate pinning trust list file, and you have applied the contents of that file to your reference computer from which you can run the Group Policy Management Console. Ahora tienes que configurar un objeto de directiva de grupo para incluir la configuración de reglas de asignación de certificados aplicada e implementarla en tu entorno.Now you need to configure a Group Policy object to include the applied certificate pin rule settings and deploy it to your environment.

Inicia sesión en el equipo de referencia con credenciales equivalente a la de administrador de dominio.Sign-in to the reference computer using domain administrator equivalent credentials.

  1. Inicia la Consola de administración de directivas de grupo (gpmc.msc).Start the Group Policy Management Console (gpmc.msc)

  2. En el panel de navegación, expande el nodo del bosque y luego expande el nodo de dominio.In the navigation pane, expand the forest node and then expand the domain node.

  3. Expande el nodo que tiene contiene el nombre de dominio de Active Directory.Expand the node that has contains your Active Directory’s domain name

  4. Selecciona el nodo Objetos de directiva de grupo.Select the Group Policy objects node. Haz clic con el botón derecho en el nodo Objetos de directiva de grupo y luego en Nuevo.Right-click the Group Policy objects node and click New.

  5. En el cuadro de diálogo Nuevo GPO, escribe Enterprise Certificate Pinning Rules en el cuadro de texto Nombre y haz clic en Aceptar.In the New GPO dialog box, type Enterprise Certificate Pinning Rules in the Name text box and click OK.

  6. En el panel de contenido, haz clic en el objeto de directiva de grupo Enterprise Certificate Pinning Rules y haz clic en Editar.In the content pane, right-click the Enterprise Certificate Pinning Rules Group Policy object and click Edit.

  7. En el Editor de administración de directivas de grupo, en el panel de navegación, expande el nodo Preferencias bajo Configuración del equipo.In the Group Policy Management Editor, in the navigation pane, expand the Preferences node under Computer Configuration. Expande Configuración de Windows.Expand Windows Settings.

  8. Haz clic con el botón derecho en el nodo Registro y haz clic en Nuevo.Right-click the Registry node and click New.

  9. En el cuadro de diálogo Nuevas propiedades de Registro, selecciona Actualizar de la lista Acción.In the New Registry Properties dialog box, select Update from the Action list. Selecciona HKEY_LOCAL_MACHINE de la lista Subárbol.Select HKEY_LOCAL_MACHINE from the Hive list.

  10. Para la Ruta de la clave, haz clic en For the Key Path, click para iniciar Explorador de elementos del Registro.to launch the Registry Item Browser. Navega a la siguiente clave de registro y selecciona el nombre del valor de registro PinRules:Navigate to the following registry key and select the PinRules registry value name:

    HKLM\SOFTWARE\Microsoft\Cryptography\OID\EncodingType0\CertDllCreateCertificateChainEngine\ConfigHKLM\SOFTWARE\Microsoft\Cryptography\OID\EncodingType0\CertDllCreateCertificateChainEngine\Config

    Haz clic en Seleccionar para cerrar el Explorador de elementos del Registro.Click Select to close the Registry Item Browser.

  11. La Ruta de la clave debe contener la clave del Registro seleccionada.The Key Path should contain the selected registry key. La configuración del Nombre del valor debe contener el nombre del valor del registro PinRules.The Value name configuration should contain the registry value name PinRules. El Tipo de valor debe ser REG_BINARY y los Datos del valor deben contener una serie larga de números del 0 al 9 y letras que van de la A a la F (hexadecimal).Value type should read REG_BINARY and Value data should contain a long series of numbers from 0-9 and letters ranging from A-F (hexadecimal). Haz clic en Aceptar para guardar la configuración y cerrar el cuadro de diálogo.Click OK to save your settings and close the dialog box.

    Propiedades de PinRules

  12. Cierra el Editor de administración de directivas de grupo para guardar la configuración.Close the Group Policy Management Editor to save your settings.

  13. Vincula el objeto de directiva de grupo Enterprise Certificate Pinning Rules para aplicar en los equipos que ejecutan Windows10, versión1703 en tu empresa.Link the Enterprise Certificate Pinning Rules Group Policy object to apply to computers that run Windows 10, version 1703 in your enterprise. Cuando estos equipos unidos a un dominio aplican la directiva de grupo, la información del Registro configurada en el objeto de directiva de grupo se aplica al equipo.When these domain-joined computers apply Group Policy, the registry information configured in the Group Policy object is applied to the computer.

Registro de reglas de asignación adicionalesAdditional Pin Rules Logging

Para ayudar en la creación de reglas de asignación de certificados, puedes configurar la opción PinRulesLogDir debajo de la clave del Registro de configuración de la cadena de certificados para incluir un directorio principal para registrar las reglas de asignación.To assist in constructing certificate pinning rules, you can configure the PinRulesLogDir setting under the certificate chain configuration registry key to include a parent directory to log pin rules.

NombreName ValorValue
ClaveKey HKLM\SOFTWARE\Microsoft\Cryptography\OID\EncodingType0\CertDllCreateCertificateChainEngine\ConfigHKLM\SOFTWARE\Microsoft\Cryptography\OID\EncodingType0\CertDllCreateCertificateChainEngine\Config
NombreName PinRulesLogDirPinRulesLogDir
ValorValue El directorio principal donde Windows debe escribir los registros de reglas de asignación adicionalesThe Parent directory where Windows should write the additional pin rule logs
Tipo de datosData type REG_SZREG_SZ

Permiso para la carpeta del registro de reglas de asignaciónPermission for the Pin Rule Log Folder

La carpeta en la que Windows escribe los registros de reglas de asignación adicionales debe tener permisos para que todos los usuarios y aplicaciones tengan acceso completo.The folder in which Windows writes the additional pin rule logs must have permissions so that all users and applications have full access. Puedes ejecutar los siguientes comandos desde un símbolo del sistema con privilegios elevados para obtener los permisos adecuados.You can run the following commands from an elevated command prompt to achieved the proper permissions.

set PinRulesLogDir=c:\PinRulesLog
mkdir %PinRulesLogDir%
icacls %PinRulesLogDir% /grant *S-1-15-2-1:(OI)(CI)(F)
icacls %PinRulesLogDir% /grant *S-1-1-0:(OI)(CI)(F)  
icacls %PinRulesLogDir% /grant *S-1-5-12:(OI)(CI)(F)
icacls %PinRulesLogDir% /inheritance:e /setintegritylevel (OI)(CI)L

Siempre que una aplicación comprueba una cadena de certificados TLS/SSL que contiene un nombre de servidor que coinciden con un nombre DNS en el certificado del servidor, Windows escribe un archivo. p7b, que consta de todos los certificados de cadena del servidor, en una de tres carpetas secundarias:Whenever an application verifies a TLS/SSL certificate chain that contains a server name matching a DNS name in the server certificate, Windows writes a .p7b file consisting of all the certificates in the server’s chain to one of three child folders:

  • AdminPinRules: coincide con un sitio en las reglas de asignación de certificados de la empresa.AdminPinRules Matched a site in the enterprise certificate pinning rules.
  • AutoUpdatePinRules: coincide con un sitio en las reglas de asignación de certificados administradas por Microsoft.AutoUpdatePinRules Matched a site in the certificate pinning rules managed by Microsoft.
  • NoPinRules: no coincide con ningún sitio en las reglas de asignación de certificados.NoPinRules Didn’t match any site in the certificate pin rules.

El nombre de archivo de salida consta de 8 dígitos hexadecimales ASCII a la izquierda, correspondientes a la huella digital de SHA1 de la raíz, seguidos por el nombre del servidor.The output file name consists of the leading 8 ASCII hex digits of the root’s SHA1 thumbprint followed by the server name. Por ejemplo:For example:

Si hay una falta de coincidencia con la regla de asignación de certificados de la empresa o la regla de asignación de certificados de Microsoft, Windows escribe el archivo. p7b en la carpeta secundaria MismatchPinRules.If there is either an enterprise certificate pin rule or Microsoft certificate pin rule mismatch, then Windows writes the .p7b file to the MismatchPinRules child folder. Si expiraron las reglas de asignación, Windows escribe el archivo. p7b en la carpeta secundaria ExpiredPinRules.If the pin rules have expired, then Windows writes the .p7b to the ExpiredPinRules child folder.

Representar una fecha en XMLRepresenting a Date in XML

Muchos atributos dentro del archivo XML de las reglas de asignación son fechas.Many attributes within the pin rules xml file are dates.
Estas fechas deben tener el formato correcto y estar representadas en hora UTC.These dates must be properly formatted and represented in UTC.
Puedes usar Windows PowerShell para dar formato a estas fechas.You can use Windows PowerShell to format these dates.
Luego puedes copiar la salida del cmdlet y pegarla en el archivo XML.You can then copy and paste the output of the cmdlet into the XML file.

Representar una fecha

Por cuestiones de simplicidad, puedes truncar el punto decimal (.) y los números de después de él.For simplicity, you can truncate decimal point (.) and the numbers after it. Sin embargo, asegúrate de anexar la "Z" mayúscula al final de la cadena de fecha XML.However, be certain to append the uppercase “Z” to the end of the XML date string.

2015-05-11T07:00:00.2655691Z
2015-05-11T07:00:00Z

Convertir una fecha XMLConverting an XML Date

También puedes usar Windows PowerShell para convertir una fecha XML en una fecha legible para las personas para validar que es la fecha correcta.You can also use Windows PowerShell to validate convert an XML date into a human readable date to validate it’s the correct date.

Convertir una fecha XML

Representar una duración en XMLRepresenting a Duration in XML

Algunos elementos pueden configurarse para usar una duración, en lugar de una fecha.Some elements may be configured to use a duration rather than a date. Debes representar la duración como un tipo de datos TimeSpan XML.You must represent the duration as an XML timespan data type. Puedes usar Windows PowerShell para dar formato y validar correctamente las duraciones (TimeSpan), copiarlas y pegarlas en el archivo XML.You can use Windows PowerShell to properly format and validate durations (timespans) and copy and paste them into your XML file.

Representar una duración

Convertir una duración XMLConverting an XML Duration

Puedes convertir un objeto TimeSpan con formato XML en una variable de duración que puedes leer.You can convert a XML formatted timespan into a timespan variable that you can read.

Convertir una duración XML

Definición de esquema XML (XSD) de lista de certificados de confianzaCertificate Trust List XML Schema Definition (XSD)

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="PinRules">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="PinRule" maxOccurs="unbounded" minOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Certificate" maxOccurs="unbounded" minOccurs="0">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:string">
                      <xs:attribute type="xs:dateTime" name="EndDate" use="optional"/>
                      <xs:attribute type="xs:string" name="File" use="optional"/>
                      <xs:attribute type="xs:string" name="Directory" use="optional"/>
                      <xs:attribute type="xs:base64Binary" name="Base64" use="optional"/>
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
              <xs:element name="Site" maxOccurs="unbounded" minOccurs="1">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:string">
                      <xs:attribute type="xs:string" name="Domain"/>
                      <xs:attribute type="xs:boolean" name="AllSubdomains" use="optional" default="false"/>
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute type="xs:string" name="Name"/>
            <xs:attribute name="Error" use="optional" default="None">
              <xs:simpleType>
                <xs:restriction base="xs:string">
                  <xs:enumeration value ="Revoked"/>
                  <xs:enumeration value ="InvalidName"/>
                  <xs:enumeration value ="None"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
            <xs:attribute type="xs:boolean" name="Log" use="optional" default="true"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute type="xs:duration" name="Duration" use="optional"/>
      <xs:attribute type="xs:duration" name="LogDuration" use="optional"/>
      <xs:attribute type="xs:dateTime" name="NextUpdate" use="optional"/>
      <xs:attribute type="xs:dateTime" name="LogEndDate" use="optional"/>
      <xs:attribute type="xs:string" name="ListIdentifier" use="optional"/>
    </xs:complexType>
  </xs:element>
</xs:schema>