我有一份 GoDaddy 的 SSL 证书,我想将其用于我的 tomcat 安装。目前,Apache HTTP 服务器正在使用它,没有任何问题。
私钥存储在 /etc/ssl/private 中,访问受到限制。但是,Apache HTTP 服务器通过 SSL 提供正确的证书没有任何问题。
当我尝试将 tomcat 指向相同的私钥时,它无法初始化安全协议,因为它无法读取私钥。这是我的 server.xml 的摘录。我使用的是 APR:
<Connector SSLCertificateFile="/etc/ssl/certs/mysite.crt"
SSLCertificateKeyFile="/etc/ssl/mysite.key"
SSLEnabled="true" maxThreads="150" port="8443"
protocol="HTTP/1.1" scheme="https" secure="true" sslProtocol="TLSv1" />
这会产生错误。Apache HTTP 配置如下所示,并且可正常工作:SSLCertificateFile /etc/ssl/certs/mysite.crt SSLCertificateKeyFile /etc/ssl/private/mysite.key
据我所知,/etc/private 目录的权限未发生改变:drwx--x--- 2 root ssl-cert 4096 2011-05-01 11:50 private 内部:-rw-r--r-- 1 root root 1,7K 2011-04-30 11:00 mysite.key
现在我的问题是:如何让 tomcat 使用同一个文件?我的临时解决方案是将密钥文件复制到可公开访问的地方,但我认为这很危险,对吗?
谢谢
答案1
该ssl-cert
组对 具有遍历权限private
,并且每个人都对密钥本身具有读取权限 - 因此,运行 Tomcat 的用户可能不是该ssl-cert
组的成员。
将用户添加到组以授予其对证书的只读访问权限:
usermod -a -G ssl-cert tomcatusername
并且,尽管您已经锁定了目录权限(应该可以覆盖您),但您可能希望更改证书本身的权限以匹配(某些服务会检查私钥是否可在全球范围内读取):
chown root:ssl-cert /etc/ssl/private/mysite.key
chmod 640 /etc/ssl/private/mysite.key