我已经找到了
- 如何在 Linux 上为 NGINX 安装 LetsEncrypt(有效)
- 如何在 Windows 上为 SQL Server 安装 LetsEncrypt(它依赖于 GUI 工具,因此毫无用处),以及
- 如何在 Linux 上为 SQL Server 安装其他证书
但我找不到任何有关 Linux 上 SQL Server 的 LetsEncrypt 的信息。无论我怎么尝试,我都会收到此错误消息:
Error: 49940, Severity: 16, State: 1.Unable to open one or more of the user-specified certificate file(s). Verify that the certificate file(s) exist with read permissions for the user and group running SQL Server.
看起来这应该是可能的,有人可以提供一些提示吗?[编辑]
我已经验证了两个 LetsEncrypt 文件具有适当的权限。我复制并重命名了它们,它们由 /var/opt/mssql/mssql.conf 的网络部分中的 tlscert 和 tlskey 键指向。
[network]
tlscert = /etc/ssl/certs/mssql.pem
tlskey = /etc/ssl/private/mssql.key
tlsprotocols = 1.2
forceencryption = 1
我不清楚的一件事是 .pem 格式的 Letsencrypt 私钥是否需要提取到 .key 文件中,所以我尝试了两种方法。无论哪种方法,我都会得到相同的错误。
这些错误显示在 mssql/log/errorlog 文件中。
以下是要求的结果
ls -l /etc/ssl/certs/mssql.pem:
-rw------- 1 mssql mssql 3586 May 3 22:20 /etc/ssl/certs/mssql.pem
ls -l /etc/ssl/private/mssql.key
-rw------- 1 mssql mssql 1679 May 3 22:42 /etc/ssl/private/mssql.key
mssql.pem 原来是 fullchain.pem,mssql.key 原来是 privkey.pem,这些都是 Nginx 所需要的文件,并且能为其工作。
答案1
转述自MariaDB SSL 配置 - 使用 Let's Encrypt 证书
密钥格式错误,可以使用 openssl 转换为其他格式。
openssl rsa -in ./privkey.pem -out ./privkeyrsa.pem
在调整权限(0400)和该文件的所有权(mysql:mysql)后,SSL 就可以按预期工作了。(当然,配置行也指向正确的证书)