Configuración de un certificado de cifrado y cifrado de secretos en clústeres Linux

En este artículo se muestra cómo configurar un certificado de cifrado y usarlo para cifrar secretos en clústeres Linux. Para los clústeres Windows, consulte Configuración de un certificado de cifrado y cifrado de secretos en clústeres Windows.

Obtención de un certificado de cifrado de datos

Un certificado de cifrado de datos se utiliza estrictamente para cifrar y descifrar los parámetros de un archivo Settings.xml del servicio y las variables de entorno de un archivo ServiceManifest.xml del servicio. No se usa para la autenticación o la firma de texto cifrado. El certificado debe cumplir los siguientes requisitos:

  • El certificado debe contener una clave privada.

  • El uso de claves de certificado debe incluir el cifrado de datos (10), y no debe incluir la autenticación de servidor o la autenticación de cliente.

    Por ejemplo, se pueden usar los siguientes comandos para generar el certificado necesario con OpenSSL:

    user@linux:~$ openssl req -newkey rsa:2048 -nodes -keyout TestCert.prv -x509 -days 365 -out TestCert.pem
    user@linux:~$ cat TestCert.prv >> TestCert.pem
    

Instalación del certificado en el clúster

Este certificado debe instalarse en cada nodo del clúster en /var/lib/sfcerts. La cuenta de usuario en la que el servicio se está ejecutando (sfuser de forma predeterminada) debe tener acceso de lectura al certificado instalado (es decir, /var/lib/sfcerts/TestCert.pem en este ejemplo).

Cifrado de secretos

El siguiente fragmento de código puede utilizarse para cifrar un secreto. Este fragmento de código solo cifra el valor; no firma el texto cifrado. Para producir texto cifrado para los valores de secreto, debe usar el mismo certificado de cifrado que está instalado en el clúster.

user@linux:$ echo "Hello World!" > plaintext.txt
user@linux:$ iconv -f ASCII -t UTF-16LE plaintext.txt | tr -d '\n' > plaintext_UTF-16.txt
user@linux:$ openssl smime -encrypt -in plaintext_UTF-16.txt -binary -outform der TestCert.pem | base64 > encrypted.txt

La cadena codificada en base64 resultante (encrypted.txt) contiene tanto el texto cifrado del secreto, así como la información sobre el certificado que se usó para cifrarlo. Puede comprobar su validez descifrándolo con OpenSSL.

user@linux:$ cat encrypted.txt | base64 -d | openssl smime -decrypt -inform der -inkey TestCert.prv

Pasos siguientes

Obtenga información sobre cómo especificar secretos cifrados en una aplicación.