在 Linux 群集上设置加密证书并对机密进行加密
本文展示了如何在 Linux 群集上设置加密证书并使用它来加密机密。 对于 Windows 群集,请参阅在 Windows 群集上设置加密证书并对机密进行加密。
获取数据加密证书
数据加密证书专门用来对服务 Settings.xml 中的参数以及服务 ServiceManifest.xml 中的环境变量进行加密和解密。 它不用于密码文本的身份验证或签名。 该证书必须满足以下要求:
证书必须包含私钥。
证书密钥用途必须包括数据加密 (10),不应包括服务器身份验证或客户端身份验证。
例如,可以通过以下命令使用 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
在群集中安装证书
必须在群集中每个节点上的 /var/lib/sfcerts
下安装此证书。 用来运行该服务的用户帐户(默认情况下为 sfuser)对已安装的证书(对于当前示例为 /var/lib/sfcerts/TestCert.pem
)应当具有读取访问权限。
加密机密
以下代码片段可用来加密机密。 此代码片段仅对值进行加密;不对密码文本进行签名。 若要生成机密值的密文,必须使用群集中安装的同一个加密证书。
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
所生成的输出到 encrypted.txt 中的 base-64 编码字符串包含机密密文,以及用来将其加密的证书相关信息。 可以通过使用 OpenSSL 将其解密来验证其有效性。
user@linux:$ cat encrypted.txt | base64 -d | openssl smime -decrypt -inform der -inkey TestCert.prv
后续步骤
了解如何在应用程序中指定加密的机密。