我已经在Ubuntu 16机器上设置了SQL Server数据库服务器。为了使其在主机网络上安全,我正在努力在其上添加SSL加密证书。
我尝试按照此链接ssl-encryption-mssql所述的步骤进行操作
但是在重新启动SQL Server服务之后,它会崩溃,并显示以下退出代码状态
代码=退出,状态= 1 /失败
我什至尝试使用journalctl -u mssql-server.service -b
检查日志,但这根本没有帮助。对于引用,我在下面添加了journalctl命令的屏幕截图:
按照官方文档中的步骤操作后,我的/var/opt/mssql/mssql.conf
看起来像这样。
[sqlagent]
enabled = false
[EULA]
accepteula = Y
[network]
tlscert = /etc/ssl/certs/cert.pem
tlskey = /etc/ssl/private/privkey.pem
tlsprotocols = 1.2
forceencryption = 1
EDIT-1:我进一步从/ var / log / syslog中检出了日志,它指出了以下日志-
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
并发现此question似乎很相似,我尝试按照Charles的方法进行尝试,但似乎不起作用。甚至我都在使用“让我们加密证书”。EDIT-2:它不是许可版本,这可能是原因吗?
如何解决这个错误?
最佳答案
即使我按照Microsoft文档中提到的相同步骤进行操作,我也面临同样的问题。实际的问题似乎与证书文件所在的文件夹路径上的权限有关。
您可以使用openssl命令验证mssql用户是否能够连接。
此命令将对证书是否有效进行基本验证。
sudo su - mssql -c "openssl verify -verbose -CAfile /etc/ssl/certs/mssql_ca.pem /etc/ssl/certs/cert.pem"
如果要查看证书组合是否真的有效(使用密钥),可以启动openssl服务器服务,然后使用另一个openssl客户端连接连接到该服务。
sudo su - mssql -c "openssl s_server -accept 8443 -cert /etc/ssl/certs/cert.pem -key /etc/ssl/private/privkeyrsa.pem -CAfile /etc/ssl/certs/mssql_ca.pem"
openssl s_client -connect localhost:8443
文档中的另一个小修正(我使用的是CA提供的证书),必须转换密钥文件格式(可能不需要您使用)。
openssl rsa -in /etc/ssl/private/key.pem -out /etc/ssl/private/privkeyrsa.pem
关于sql-server - 在Linux中添加SSL证书后,SQL Server服务中断,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56619361/