首先,我能够在 Ubuntu 14.0.4 服务器上为我的域成功设置 letsencrypt 证书,并且我确认一切正常,通过验证我可以通过 https 访问我的域并检查我确实有正确的文件:
/etc/letsencrypt/live/domain.tld/
我在服务器上运行着一个 Xeams 邮件服务器,我发现很难按照指导。首先我必须将 LetsEncrypt 生成的证书文件从 转换.pem
为.crt
使用:
openssl x509 -outform der -in my-cert.pem -out my-cert.crt
运行良好,成功转换了文件,但我对指南的问题是,它假设我还没有 SSL 证书,但事实并非如此。当我已经拥有 Letsencrypt 的证书时,我认为我不需要再次生成 CSR 代码。
要清楚的是,这些是我的域名的证书文件。
- 证书
- 链式PEM
- 私钥
- 全链文件
但是在指南中,它要求我生成 CSR 代码等等,我跳过了生成 CSR 到必须将证书添加到密钥库的部分,但我应该做的事情不是很简单,因为指南中的文件与我从 Letsencrypt 获得的内容没有关联。
当我尝试遵循指南的其余部分并测试我的服务器是否接受安全 IMAP 端口 995 上的连接时,我的服务器返回自签名证书而不是来自 CA 的证书。
我使用 openssl 测试了安全 IMAP 端口 995
openssl s_client -connect localhost:995
我还确认 Letsencrypt 支持 ssl 电子邮件协议和 Java,所以我肯定哪里做错了。我一直不知道如何将我的证书添加到密钥库。
答案1
经过几天的搜索,我终于在指南的帮助下找到了答案这里,你甚至不需要使用 keytool,因为 xeams 支持PKCS12证书。
创建一个PKCS12包含你的
fullchain.pem
和privkey.pem
:openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out synametrics.cert -name xeams
复制
synametrics.cert
到 xeams 的安装目录:cp synametrics.cert /etc/Xeams/config/
如果文件夹尚不存在,则在文件夹中创建一个
server.properties
文件,并将以下参数附加到文件中:./config
javax.net.ssl.keyStore=config/synametrics.cert javax.net.ssl.keyStorePassword=password SSLCertificatePassword=password
在哪里密码是您使用 openssl 创建密钥库时输入的密码。
选择PKCS12Xeams 管理面板 > SMTP 配置 > 配置 SSL 中的密钥库类型:
启用安全 SMTP 服务器并在 xeams 中指定其端口。验证您是否可以在指定端口上连接到邮件服务器:
openssl s_client -connect mail.example.com:465
修复弱 DH 密钥
你可能会收到来自 openssl 的错误,关于DH密钥xeams 使用的文件太小,这是 xeams 的问题,而不是 openssl 或 letsencrypt 的问题。
问题是由于 xeams 使用了一个非常弱临时 Diffie-Hellman 公钥,小于 1024 位,而理想情况下,它不应小于 2048 位。我尝试了很多方法,但这是为我解决问题的方法:
/etc/xeams/jre
将 xeams中自带的 jre 更新为本文作者:synammetrics:a.停止xeams smtp服务:
service xeams stop
b. 重命名 xeams 安装目录中的 jre 文件夹:
mv -T jre jre.old
c. 从上述文章的链接中获取适合您机器架构的压缩 jre,并将其解压到目录中
/etc/xeams/jre/
,您的新 jre 文件夹应包含压缩 jre 的内容。d.启动xeams!
service xeams start
我希望这可以为某人解决这个问题。:)