首先,我能够成功地为我的域名在Ubuntu 14.0.4服务器上设置一个letsencrypt证书,通过validation我可以通过https访问我的域名,并确认我确实拥有正确的文件,我确认了一切正常。
/etc/letsencrypt/live/domain.tld/
我在服务器上运行了一个Xeams邮件服务器,我一直在按照指南中的步骤find它。 首先,我必须使用以下命令将由LetsEncrypt生成的证书文件从.pem
为.crt
:
openssl x509 -outform der -in my-cert.pem -out my-cert.crt
哪些工作正常,并成功地转换文件,但我有指导的问题是,它假定我还没有一个ssl证书,情况并非如此。 当我已经拥有Letsencrypt的证书时,我认为我不应该再次生成CSR代码。
要清楚的是,这些是我的域名所拥有的证书文件。
但在指南中,它要求我生成CSR代码,而不是,我已经跳过了生成一个CSR的部分,我必须将证书添加到密钥库,但它不是很直截了当,我应该做的,导致文件在指南中与我从Letsencrypt获得的内容不相关。
当我尝试遵循指南的其余部分,并testing我的服务器接受安全IMAP端口995上的连接时,我的服务器返回一个自签名证书,而不是来自CA的证书。
我用openssl来testing安全的IMAP端口995
openssl s_client -connect localhost:995
我也证实了Letsencrypt支持SSL电子邮件协议和Java,所以必须有一些我没有得到正确的。 我一直无法弄清楚如何将我的证书添加到密钥库。
所以我终于在经过几天的search之后find了答案,感谢这里的指南,甚至不需要使用keytool,因为xeams支持PKCS12证书。
创build一个包含您的fullchain.pem
和privkey.pem
的PKCS12 :
openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out synametrics.cert -name xeams
将您的synametrics.cert
复制到xeams的安装目录中:
cp synametrics.cert /etc/Xeams/config/
在./config
文件夹中创build一个server.properties
文件,如果它不存在并将下面的参数追加到文件中:
javax.net.ssl.keyStore=config/synametrics.cert javax.net.ssl.keyStorePassword=password SSLCertificatePassword=password
其中, pasword是您在使用openssl创build密钥库时input的密码。
在Xeamspipe理面板> SMTPconfiguration>configurationSSL中selectPKCS12密钥库types:
启用安全SMTP服务器并在xeams中指定其端口。 validation您可以连接到指定端口上的邮件服务器:
openssl s_client -connect mail.example.com:465
为弱密钥修复
你可能会从openssl得到关于xeams使用的DHKey太小的错误,这是一个xeams问题,不是openssl或者letsencrypt。
这个问题是由xeams使用一个非常弱的短暂Diffie-Hellman公钥 ,小于1024位,理想情况下,不应该小于2048位。 我尝试了很多东西,但这是为我修复的:
使用synammetrics的本文中的内容更新/etc/xeams/jre
中的/etc/xeams/jre
:
一个。 停止xeams smtp服务:
service xeams stop
湾 重命名您的xeams安装目录中的jre文件夹:
mv -T jre jre.old
C。 从上面的文章的链接抓取机器体系结构的压缩jre,并将其解压到/etc/xeams/jre/
目录,新的jre文件夹应该包含压缩的jre的内容。
d。 启动xeams!
service xeams start
我希望这可以解决这个问题。 🙂