Configurar um certificado de encriptação e encriptar segredos em clusters do Linux
Este artigo mostra como configurar um certificado de encriptação e utilizá-lo para encriptar segredos em clusters do Linux. Para clusters do Windows, veja Configurar um certificado de encriptação e encriptar segredos em clusters do Windows.
Obter um certificado de enciframentação de dados
Um certificado de enciframentação de dados é utilizado estritamente para encriptação e desencriptação de parâmetros nas variáveis de ambiente e Settings.xml de um serviço no ServiceManifest.xml de um serviço. Não é utilizado para autenticação ou assinatura de texto de cifra. O certificado tem de cumprir os seguintes requisitos:
O certificado tem de conter uma chave privada.
A utilização da chave de certificado tem de incluir a Encifração de Dados (10) e não deve incluir a Autenticação do Servidor ou a Autenticação de Cliente.
Por exemplo, os seguintes comandos podem ser utilizados para gerar o certificado necessário com o 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
Instalar o certificado no cluster
O certificado tem de ser instalado em cada nó do cluster /var/lib/sfcerts
em . A conta de utilizador na qual o serviço está em execução (sfuser por predefinição) deve ter acesso de leitura ao certificado instalado (ou seja, /var/lib/sfcerts/TestCert.pem
no exemplo atual).
Encriptar os segredos
O fragmento seguinte pode ser utilizado para encriptar um segredo. Este fragmento encripta apenas o valor; não assina o texto da cifra. Tem de utilizar o mesmo certificado de enciframentação que está instalado no cluster para produzir cifratexto para valores secretos.
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
A saída de cadeia codificada base 64 resultante para encrypted.txt contém o cifratexto secreto, bem como informações sobre o certificado que foi utilizado para encriptá-lo. Pode verificar a sua validade ao desencriptar com o OpenSSL.
user@linux:$ cat encrypted.txt | base64 -d | openssl smime -decrypt -inform der -inkey TestCert.prv