En este artículo se describe cómo firmar digitalmente una proyecto de macros en Windows mediante una certificado. Si aún no tienes un certificado digital, tendrás que obtener uno.
Sugerencia: Para usar o probar proyectos de macro en su propio equipo, puede crear su propio certificado de firma con la herramienta de Selfcert.exe. Encontrarás más detalles al respecto a continuación.
Obtener un certificado digital
Puede obtener un certificado digital de una entidad de certificación comercial (CA), de su administrador de seguridad interna o de un profesional de tecnologías de la información (TI).
Para obtener más información sobre entidades emisoras de certificados que ofrecen servicios para productos de Microsoft, consulte la lista de miembros del programa de certificados raíz de Microsoft.
Dado que el certificado digital que crea no está emitido por una entidad de certificación formal de confianza, los proyectos de macro firmados con dichos certificados se conocen como proyectos con firma propia. Microsoft Office confía en los certificados de firma propia únicamente en los equipos que contienen el certificado de firma propia agregado en la carpeta de certificación raíz de confianza en el almacén de certificados del usuario actual. Esto hace que sea bueno para probar o usar en su propio equipo o un número muy pequeño de equipos que administra, pero no muy bueno para distribuir proyectos de macros a otras personas.
Crear un certificado de firma propia
Ver el certificado en el almacén de certificados personales
-
Abre Microsoft Edge.
-
Escribe edge://settings/privacy en la barra de direcciones.
-
Desplácese hacia abajo hasta la sección Seguridad y seleccione Administrar certificados.
Firmar digitalmente un proyecto de macro de VBA en Excel, PowerPoint, Publisher, Visio, Outlook o Word
-
Abra el archivo que contiene el proyecto de macro que desee firmar.
-
En la pestaña Programador, en el grupo Código, haga clic en Visual Basic.
Nota: Si la pestaña Programador no está disponible: haga clic en la pestaña Archivo. Haga clic en Opciones. Haga clic en Personalizar cinta de opciones. En la lista Personalizar la Cinta, seleccione Programador y después haga clic en Aceptar.
-
En Visual Basic, en el menú Herramientas haga clic en Firma digital.
-
Se observa el cuadro de diálogo Firma digital.
-
Seleccione un certificado y haga clic en Aceptar.
Nota: Si no ha seleccionado un certificado digital o desea usar otro, haga clic en Elegir. Seleccione un certificado y haga clic en Aceptar.
Agregar una marca de tiempo a la firma
Cuando los usuarios ejecutan la macro de VBA, Office comprobará la firma y el certificado con el que se firmó. Agregar una marca de tiempo a la firma significa que la macro seguirá siendo tratada como firmada, incluso después de que el certificado haya expirado, siempre y cuando no se revoque el certificado. Esto puede reducir la interrupción de los usuarios.
Un certificado que simplemente ha expirado se puede seguir usando para validar código, simplemente no se puede usar para firmar nuevo código.
Para agregar una marca de tiempo, debe agregar tres claves al Registro.
Precaución: Si el registro se edita de forma incorrecta podrían producirse daños graves en el sistema. Antes de realizar cambios en el registro, se recomienda hacer una copia de seguridad de los datos de valor del equipo.
Tecla |
Tipo |
Descripción |
---|---|---|
HKCU\Software\Microsoft\VBA\Security\TimeStampURL |
REG_SZ |
La dirección URL de su servidor de marca de tiempo preferido. (Obligatorio) |
HKCU\Software\Microsoft\VBA\Security\TimeStampRetryCount |
REG_DWORD |
El número de veces que el Editor de Visual Basic intentará conectarse al servidor de marcas de tiempo antes de producirse un error. (Opcional : si no establece esto, el Editor de Visual Basic solo intentará ponerse en contacto con el servidor una vez) |
HKCU\Software\Microsoft\VBA\Security\TimeStampRetryDelay |
REG_DWORD |
El número de segundos (en milisegundos) que esperará el Editor de Visual Basic entre reintentar para conectarse al servidor de marcas de tiempo. (Opcional : si no establece esto, no habrá ningún retraso entre las reintentos) |
Una vez que haya agregado una entrada TimeStampURL en funcionamiento, el Editor de Visual Basic agregará automáticamente una marca de tiempo cada vez que firme digitalmente una macro.
Notas adicionales
-
Se recomienda firmar macros solo después de haber probado la solución y de que esta esté lista para su distribución: cuando se modifica de algún modo el código de un proyecto de macro firmado, se elimina la firma digital. Sin embargo, si tiene el certificado digital válido que anteriormente se usó para firmar el proyecto en su equipo, el proyecto de macro se firmará automáticamente al guardarlo.
-
Una forma de evitar que los usuarios cambien accidentalmente el proyecto de macro e invalide su firma es bloquear el proyecto de macro antes de aplicar la firma. Su firma digital garantiza que el proyecto no se ha manipulado desde que lo firmó, pero no demuestra que escribió el proyecto. Incluso si ha bloqueado el proyecto de macro, es posible que otro usuario todavía pueda reemplazar la firma con otra firma. Los administradores corporativos también pueden volver a firmar plantillas y complementos para asegurarse de que solo se ejecuta el contenido aprobado en los equipos de la empresa.
-
Si crea un complemento que agrega código a un proyecto de macro, el código debe determinar si el proyecto se ha firmado digitalmente e informar al usuario de las consecuencias de modificar un proyecto firmado antes de continuar.
-
Los usuarios que usan certificados comerciales pueden encontrar bloqueos debido a la limitación de los algoritmos hash admitidos en la firma. Puede agregar un valor de clave del Registro DWORD V1HashEnhanced para elegir otro algoritmo hash, en HKCU\SOFTWARE\Microsoft\VBA\Security con reglas de algoritmo de valor (1 a SHA1, 2 a SHA256, 3 a SHA384, 4 a SHA512 y otros a MD5). Esta configuración está disponible en las últimas versiones del canal CC.
Learn more
Habilitar o deshabilitar macros en archivos de Microsoft 365
Nota: Este artículo fue creado por una persona con la asistencia de una inteligencia artificial (IA).