Automatizar el certificado de exportación x509 con cadena de Server 2008 R2 a un archivo p7b SIN herramientas externas?

Administro los controladores de dominio centralmente, pero los administradores del sitio administran sus propios remitentes digitales localmente. Puedo exportar fácilmente un certificado X509 (no se necesita clave privada) con toda la cadena desde un controlador de dominio de Windows Server 2008 R2 a un archivo p7b a través del asistente:

~~~~~~~~~~~~~~~~~

... 5. Se abre el Asistente de exportación de certificados. Haga clic en Siguiente.

En el cuadro de diálogo Formato de archivo de exportación, haga lo siguiente:

a. Seleccione Estándar de sintaxis de mensaje criptográfico - Certificados PKCS # 7 (.P7B).

si. Marque Incluir todos los certificados en la ruta de certificación si es posible.

C. Haga clic en Siguiente.

En el cuadro de diálogo Archivo para exportar, haga clic en Examinar.

En el cuadro de diálogo Guardar como, haga lo siguiente:

a. En el cuadro Nombre de archivo, escriba ciroots.p7b.

si. En el cuadro Guardar como tipo, seleccione Certificados PKCS # 7 (* .p7b).

C. Clic en Guardar.

En el cuadro de diálogo Archivo para exportar, haga clic en Siguiente.

En la página Finalización del Asistente para exportación de certificados, haga clic en Finalizar.

~~~~~~~~~~~~~~~~~

Funciona muy bien El archivo resultante se importa muy bien en un remitente digital para la autenticación. Da a los administradores del sitio acceso a los otros certificados de la cadena si aún no los han importado. No necesita contener la clave privada, ya que funciona bien sin ella.

El problema es que necesitaría hacer esto manualmente, literalmente docenas de veces, una vez para cada sitio de negocios, ya que cada uno tiene sus propios controladores de dominio, cada uno con su propio certificado. Debe haber una forma de automatizar la exportación de este certificado (PowerShell con .NET, certutil.exe, etc.). Tal vez algo que use System.Security.Cryptography.X509Certificates X509IncludeOption con WholeChain, pero no puedo hacer que funcione:

$ Cert = (dir Cert: \ localmachine \ my) [0]

# PKCS7 cert export con extensión de archivo .p7b.

$ CertCollection = New-Object

System.Security.Cryptography.X509Certificates.X509Certificate2Collection

$ Cert | % {[void] $ CertCollection.Add ($ _)}

$ Exported_pkcs7 = $ CertCollection.Export ('Pkcs7')

$ out_FileName = $ ENV: COMPUTERNAME + ".p7b"

$ My_Export_Path = 'd: \ CertFiles \' + $ out_FileName

Set-Content -path $ My_Export_Path -Value $ Exported_pkcs7 -encoding Byte

Con este código, solo obtengo el certificado, no el resto de los certificados de su cadena. No necesito todo el script, solo la parte que duplica la exportación con cadena que ya puedo hacer manualmente a través de la GUI.

Respuestas a la pregunta(1)

Su respuesta a la pregunta