Cómo convertir un certificado SSL de formato PFX a PEM

El formato PFX es un formato binario que debe contener tanto el certificado del dominio y el certificado intermedio como la propia clave privada, y están protegidos (o deberían) con contraseña. Este formato es el utilizado por el servidor web de Microsoft IIS.

Y el formato PEM es el utilizado en servidores como Apache o Nginx, que es un fichero de texto que contiene unas cuantas líneas de caracteres entre las típicas marcas

-----BEGIN CERTIFICATE-----

<aquí va el certificado>

-----END CERTIFICATE-----

Si tenemos un certificado en formato PFX podemos convertirlo a PEM así:

$ openssl pkcs12 -in certfile.pfx -out bundle.txt -nodes
Enter Import Password:
$

El fichero «bundle.txt» generado es un fichero de texto que contendrá en formato PEM tanto el certificado SSL del dominio y el certificado intermedio, como la clave privada.

A partir de aquí sólo habría que generar los ficheros de clave privada y el bundle con el crt del dominio y el intermedio, y configurarlos en el Apache o en el Nginx.

Cómo convertir un certificado SSL de formato PEM a PFX

El formato PEM es el utilizado en servidores como Apache o Nginx. Es un fichero de texto que contiene unas cuantas líneas de caracteres entre las típicas

-----BEGIN CERTIFICATE-----

<aquí va el certificado>

-----END CERTIFICATE-----

Pero para instalar el certificado en un IIS hace falta convertirlo a formato PFX, que es un formato binario que debe contener tanto el certificado del dominio y el certificado intermedio como la propia clave privada, y están protegidos con contraseña.

Si tenemos un certificado en formato PEM podemos convertirlo a PFX así:

1.- Concatenar en un solo fichero de texto el bundle formado por el certificado del dominio y el certificado intermedio, de forma que queden así:

-----BEGIN CERTIFICATE-----

<aquí va el certificado del dominio>

-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----

<aquí va el certificado intermedio>

-----END CERTIFICATE-----

2.- Ejecutar el siguiente comando y escribir la contraseña deseada para importar y exportar el certificado 2 veces:

$ openssl pkcs12 -inkey key.pem -in cert_and_intermediate.pem -export -out file.pfx
Enter Export Password:
Verifying - Enter Export Password:
$

Y ese fichero «file.pfx» es el que se puede instalar en el IIS o donde sea necesario.

Cómo añadir user/pwd al fichero .htpasswd

Para activar la protección por usuario y contraseña en Nginx mediante el fichero .htpasswd hay que hacer las siguientes cosas:

Hay que activar la autenticación básica y el fichero de contraseñas en la sección «location» del fichero de configuración de Nginx para el directorio que se quiera proteger así:

    location / {
            auth_basic "Restricted";
            auth_basic_user_file /var/www/.htpasswd;

            try_files   $uri /index.php?$query_string;
            sendfile off;
    }

Crear la línea que hay que añadir al fichero .htpasswd con el usuario y la contraseña encriptada así:

# htpasswd –nb usuario contraseña

Y el resultado del comando anterior, añadirlo en una línea del fichero .htpasswd.

Y por último, hay que reiniciar Nginx.

Actualizar claves GPG en Ubuntu, o cómo arreglar un «GPG error» al hacer «apt-get update»

Al hacer:

# apt-get update

en Ubuntu, me aparecía el siguiente error:

W: GPG error: http://packages.medibuntu.org natty InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY XXXXXXXXXXXXXXXX

donde «XXXXXXXXXXXXXXXX» es un número hexadecimal.

Para arreglarlo, hay que actualizar la clave del servidor así:

# apt-key adv –keyserver keyserver.ubuntu.com –recv-keys XXXXXXXXXXXXXXXX

El resultado será algo como:

Executing: gpg –ignore-time-conflict –no-options –no-default-keyring –secret-keyring /tmp/tmp.Mk0yrrOVQP –trustdb-name /etc/apt/trustdb.gpg –keyring /etc/apt/trusted.gpg –primary-keyring /etc/apt/trusted.gpg –keyserver keyserver.ubuntu.com –recv-keys XXXXXXXXXXXXXXXX
gpg: requesting key XXXXXXXX from hkp server keyserver.ubuntu.com
gpg: key 0C5A2783: public key «Medibuntu Packaging Team » imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1

Y después de esto, ya se puede hacer el update sin problema.