Cómo solicitar y utilizar un certificado de firma de código de ServBay
Introducción
Durante el desarrollo y la distribución de software, la firma de código es un paso clave para asegurar la confianza de los usuarios y la integridad del software. Al firmar digitalmente el código, los desarrolladores pueden demostrar el origen del software y garantizar que el código no haya sido alterado desde su firma.
ServBay ofrece una funcionalidad práctica que permite a los desarrolladores solicitar y utilizar en su entorno local certificados de firma de código emitidos por una Autoridad Certificadora (CA) interna de ServBay. Estos certificados son especialmente útiles para:
- Firmar software durante etapas locales de desarrollo o pruebas, simulando el proceso real de firma.
- Firmar scripts, herramientas o aplicaciones de uso interno para verificar su origen e integridad dentro de un equipo o entorno de confianza.
- Aprender y practicar todo el proceso de firma de código sin necesidad de comprar costosos certificados comerciales.
Nota importante: Los certificados de firma de código emitidos por la CA interna de ServBay no provienen de autoridades de certificación públicas y de confianza (como Let's Encrypt, Comodo, etc.). Estos certificados no son reconocidos automáticamente por sistemas operativos o navegadores públicos. Por lo tanto, no son adecuados para escenarios que requieren confianza pública, como la distribución de software comercial a usuarios finales, publicaciones en tiendas de aplicaciones o para superar chequeos de seguridad del sistema operativo (como la advertencia de desarrolladores desconocidos de macOS Gatekeeper). Su uso está destinado principalmente a desarrollo local, pruebas o entornos controlados.
¿Qué es un certificado de firma de código?
Un certificado de firma de código es un certificado digital que se utiliza para firmar digitalmente código ejecutable, scripts, librerías y otros componentes de software. Su propósito principal es crear confianza y garantizar la seguridad:
- Verificación de identidad del publicador: El certificado contiene información sobre el publicador, y la firma digital prueba que el software proviene efectivamente del desarrollador u organización especificada en el certificado.
- Garantizar la integridad del código: El proceso de firmado genera un valor hash basado en el contenido del código y lo cifra con una clave privada. Durante la validación, el sistema recalcula el hash y compara el valor desencriptado de la firma. Cualquier modificación al código hará que los valores no coincidan, evidenciando una alteración.
- Aumentar la confianza del usuario: Los sistemas operativos o software de seguridad suelen mostrar advertencias sobre software no firmado o proveniente de publicadores desconocidos. Usar un certificado de firma de código elimina estas advertencias (en entornos de confianza o cuando la CA de ServBay es añadida manualmente a la cadena de confianza), aumentando la seguridad percibida por los usuarios al instalar el software.
- Evitar la propagación de software malicioso: La firma de código ayuda a los usuarios a distinguir entre software legítimo y software malicioso disfrazado, ayudando así a prevenir la distribución de malware.
Cómo solicitar un certificado de firma de código en ServBay
ServBay simplifica el proceso de obtener certificados de firma de código en el entorno local.
Abrir el panel de gestión de certificados SSL: En la barra lateral de la aplicación ServBay, haz clic en el menú "SSL Certificates".
Iniciar una nueva solicitud de certificado: En la parte superior derecha de la página de gestión de certificados SSL, haz clic en el botón "+" (Agregar).
Completar la información del certificado: En la página "Request Certificate" (Solicitar Certificado), deberás completar la siguiente información clave:
- Common Name (Nombre Común): Introduce el nombre de tu organización o tu nombre personal. Ejemplo:
ServBay, LLC
oServBay Demo Developer
. - Usage Purpose (Proposito de Uso): Selecciona el propósito del certificado. Elije
Code Signing
(Firma de código). - Request Method (Método de Solicitud): Selecciona cómo se emitirá el certificado. Elije
ServBay CA
, que utiliza la emisión interna de certificados de ServBay. - Issuer (Emisor): Selecciona la CA interna de ServBay que emitirá el certificado. Por lo general se usa
ServBay User CA
. - Algorithm (Algoritmo): Escoge el algoritmo criptográfico para el par de claves. Opciones comunes incluyen
ECC
(Criptografía de Curva Elíptica) oRSA
. ECC suele ser más seguro y ofrece claves más cortas para la misma seguridad. - Key Length (Longitud de la clave): Especifica la longitud de clave según el algoritmo. Por ejemplo, para ECC
384
y para RSA2048
o4096
. Claves más largas ofrecen mayor seguridad pero pueden ser más lentas de procesar. - Password (Contraseña): ¡Muy importante! Establece una contraseña robusta para proteger tu clave privada. Esta contraseña se debe proporcionar al exportar el certificado (archivo
.p12
) y cuando lo uses con herramientas de firma de código. No la pierdas, ServBay no puede recuperar contraseñas de claves privadas extraviadas. Elige tu propia contraseña segura. (Nota:ServBay.dev
en las capturas es solo un ejemplo, no uses contraseñas débiles, crea una segura personalizada).
Imagen de ejemplo, rellena según tu información real
- Common Name (Nombre Común): Introduce el nombre de tu organización o tu nombre personal. Ejemplo:
Enviar la solicitud del certificado: Luego de completar todos los datos y verificar que estén correctos, haz clic en "Request" en la parte inferior de la página. ServBay utilizará la CA de usuario seleccionada para emitir automáticamente el certificado de firma de código.
Exportar y usar el certificado
Tras obtener el certificado de firma de código, deberás exportarlo en un formato estándar para utilizarlo con diferentes herramientas de firma de código. El certificado exportado por ServBay suele tener formato .p12
.
Accede al panel de gestión de certificados SSL: Haz clic en "SSL Certificates" en la barra lateral de ServBay.
Localiza tu certificado de firma de código: Encuentra en la lista el certificado recién solicitado cuyo propósito sea "Code Signing".
Haz clic en la opción de exportar: Haz clic en el icono de exportación junto a este certificado (normalmente una flecha hacia la derecha).
Selecciona carpeta de exportación y establece la contraseña: En la ventana de exportación que se abrirá, selecciona la carpeta donde deseas guardar el archivo. El formato será
.p12
(PKCS#12), que incluye tanto el certificado como la clave privada, protegidos por contraseña. Debes ingresar la contraseña que estableciste al solicitar el certificado para completar la exportación.Usa el certificado en herramientas de firma de código: Importa el archivo
.p12
en tu herramienta de firma de código. Dependiendo del sistema operativo y entorno de desarrollo, usarás herramientas diferentes:- macOS: Utiliza la herramienta incorporada de línea de comandos
codesign
. Puede ser necesario importar primero el.p12
en "Acceso a Llaveros" (Keychain Access). - Windows: Utiliza el comando
signtool.exe
incluido con el SDK de Windows. Es posible importar primero el.p12
en el administrador de certificados de Windows. - Otros entornos o toolchains: Consultar los documentos correspondientes a la tecnología utilizada (por ejemplo,
jarsigner
en Java,SignTool
en .NET, herramientas de terceros en Go, etc.), que suelen requerir la ruta al archivo.p12
y la contraseña de la clave privada.
- macOS: Utiliza la herramienta incorporada de línea de comandos
Una vez importado, puedes utilizar el certificado para firmar digitalmente tu código, aplicaciones, drivers, etc.
Ejemplo de firma de código con el certificado en macOS
A continuación se muestra cómo firmar y verificar un ejecutable en macOS usando la herramienta codesign
y un certificado .p12
exportado de ServBay.
Supongamos que ya importaste el archivo .p12
en Acceso a Llaveros e ingresaste la contraseña correctamente.
bash
# 1. Crear un archivo fuente C simple para probar la firma
# Guarda lo siguiente como test.c
cat <<EOF > test.c
#include <stdio.h>
int main() {
printf("Hello, ServBay Code Signing!\n");
return 0;
}
EOF
# 2. Compilar el archivo C para generar un ejecutable
# -o /tmp/test define el nombre de salida como /tmp/test
gcc test.c -o /tmp/test
echo "Compilación exitosa, generado /tmp/test"
# 3. Buscar certificados válidos para firma de código (Identity)
# -v muestra información detallada
# -p codesigning filtra certificados de firma de código
# Busca el "Common Name" o hash de tu certificado (ejemplo: 99C183BC3796067FAFBA6F232D1C3C3425DAABDA)
security find-identity -v -p codesigning
# Ejemplo de salida:
# 1) ABCDEF1234567890ABCDEF1234567890ABCDEF12 "Apple Development: Your Name (XYZ123)"
# 2) 99C183BC3796067FAFBA6F232D1C3C3425DAABDA "ServBay Demo Developer"
# 2 valid identities found
# Anota el hash o Common Name correspondiente a ServBay
# 4. Firmar el archivo ejecutable con el certificado encontrado
# -f fuerza la firma (reemplaza si existe)
# -s especifica la identidad (hash o Common Name)
# --timestamp adjunta sello de tiempo (opcional, pero recomendado)
# /tmp/test es el archivo a firmar
codesign -f -s "ServBay Demo Developer" --timestamp /tmp/test
# O usando el hash:
# codesign -f -s "99C183BC3796067FAFBA6F232D1C3C3425DAABDA" --timestamp /tmp/test
echo "/tmp/test firmado con certificado de firma de código"
# 5. Verificar si la firma es correcta
# -dvvv muestra información muy detallada
codesign -dvvv /tmp/test
# Verifica el campo "Authority", que debe mostrar tu certificado y la cadena CA de ServBay
# Revisa "Signature size", "CDHash", etc.
# Verifica que exista "Timestamp"
# Parte de la salida podría ser:
# Authority=ServBay Demo Developer
# Authority=ServBay User CA - ECC Code Signing
# Authority=ServBay Public CA - ECC Root
# Timestamp=7 nov. 2024 a las 18:26:48 (ejemplo)
# 6. Modificar el archivo para invalidar la firma
# Añade datos aleatorios para cambiar el hash
echo "abcde" >> /tmp/test
echo "El contenido de /tmp/test ha sido modificado"
# 7. Verificar la firma nuevamente
# Ahora la validación debe fallar
codesign -dvvv /tmp/test
# Salida de ejemplo:
# /tmp/test: code object is not signed at all
# O errores similares indicando que la firma ha quedado inválida por la alteración del archivo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Notas:
security find-identity
lista los certificados disponibles en el llavero para un tipo de uso específico (comocodesigning
). Así puedes encontrar el identificador (nombre común o hash) del certificado importado de ServBay.codesign -f -s "Identidad"
ejecuta la firma. La opción--timestamp
solicita sello de tiempo a un servidor, lo que hace que la validez de la firma persista incluso si el certificado expira, siempre que el sello fuera emitido cuando el certificado era válido.codesign -dvvv
valida la firma y muestra información detallada para comprobar validez del certificado, cadena de confianza y la coincidencia del hash.- Modificar el archivo y volver a verificar, demuestra la función principal de la firma de código: validación de integridad. Cualquier cambio en el archivo invalida la firma.
Renovación del certificado
Los certificados de firma de código de ServBay tienen un periodo de validez definido (normalmente 800 días). Antes de su vencimiento, puedes renovarlo desde el panel de certificados SSL de ServBay.
- Accede al panel de certificados SSL.
- Localiza el certificado de firma de código a renovar.
- Clic en la opción de renovación: Haz clic en el icono de renovación (normalmente, unas flechas en círculo).
- Confirma la renovación: Al confirmar, ServBay emitirá un nuevo certificado válido por otros 800 días desde la fecha actual.
Eliminación de certificados
Si ya no necesitas un certificado, puedes eliminarlo desde ServBay.
- Accede al panel de certificados SSL.
- Encuentra el certificado que deseas eliminar.
- Clic en la opción de eliminar: Haz clic en el icono de la papelera junto al certificado.
- Confirma la eliminación: En el menú de confirmación, selecciona "Delete" y confirma la operación. Ten en cuenta que el certificado no podrá recuperarse después de borrarlo.
Preguntas Frecuentes (FAQ)
P: ¿Son gratuitos los certificados de firma de código emitidos por ServBay?
R: Sí, los certificados emitidos por la CA interna de ServBay forman parte de la funcionalidad integrada de ServBay y no tienen coste adicional.
P: ¿Puedo utilizar un certificado de ServBay para firmar y distribuir mi software comercial?
R: No. Los certificados de ServBay provienen de una CA interna y no son reconocidos por sistemas operativos y tiendas de software públicas. Solo están pensados para desarrollo local, pruebas o entornos internos controlados. Para software comercial distribuido públicamente es necesario adquirir certificados de una CA pública válida.
P: ¿Qué hago si olvido la contraseña asignada al exportar el .p12
?
R: ServBay no almacena la contraseña de tu clave privada. Si la olvidas, no podrás exportar ni utilizar la clave privada asociada al certificado. Deberás eliminar el certificado y solicitar uno nuevo.
P: ¿Puedo añadir la ServBay User CA al almacén de confianza de mi sistema operativo?
R: Sí. Normalmente deberás exportar el certificado de ServBay User CA y luego importarlo manualmente en el almacén de confianza del sistema operativo o del navegador.
Resumen
La funcionalidad de certificados de firma de código de ServBay proporciona conveniencia a los desarrolladores para pruebas de firma en entornos locales y firma de herramientas internas. Con esta guía, ahora sabes cómo solicitar, exportar y utilizar estos certificados en ServBay. Recuerda que su uso es principalmente para testeo y desarrollo; no los utilices para software que requiera confianza pública.
Si tienes dudas durante la solicitud o el uso, consulta la documentación oficial de ServBay o busca ayuda en la comunidad.