如何在 Xeams 邮件服务器上设置 Letsencrypt ssl?

如何在 Xeams 邮件服务器上设置 Letsencrypt ssl?

首先,我能够在 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 代码。

要清楚的是,这些是我的域名的证书文件。

  1. 证书
  2. 链式PEM
  3. 私钥
  4. 全链文件

但是在指南中,它要求我生成 CSR 代码等等,我跳过了生成 CSR 到必须将证书添加到密钥库的部分,但我应该做的事情不是很简单,因为指南中的文件与我从 Letsencrypt 获得的内容没有关联。

当我尝试遵循指南的其余部分并测试我的服务器是否接受安全 IMAP 端口 995 上的连接时,我的服务器返回自签名证书而不是来自 CA 的证书。

我使用 openssl 测试了安全 IMAP 端口 995

openssl s_client -connect localhost:995

我还确认 Letsencrypt 支持 ssl 电子邮件协议和 Java,所以我肯定哪里做错了。我一直不知道如何将我的证书添加到密钥库。

答案1

经过几天的搜索,我终于在指南的帮助下找到了答案这里,你甚至不需要使用 keytool,因为 xeams 支持PKCS12证书。

  1. 创建一个PKCS12包含你的fullchain.pemprivkey.pem

    openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out synametrics.cert -name xeams

  2. 复制synametrics.cert到 xeams 的安装目录:

    cp synametrics.cert /etc/Xeams/config/

  3. 如果文件夹尚不存在,则在文件夹中创建一个server.properties文件,并将以下参数附加到文件中:./config

    javax.net.ssl.keyStore=config/synametrics.cert javax.net.ssl.keyStorePassword=password SSLCertificatePassword=password

    在哪里密码是您使用 openssl 创建密钥库时输入的密码。

  4. 选择PKCS12Xeams 管理面板 > SMTP 配置 > 配置 SSL 中的密钥库类型:

    密钥库参数

  5. 启用安全 SMTP 服务器并在 xeams 中指定其端口。验证您是否可以在指定端口上连接到邮件服务器:

    openssl s_client -connect mail.example.com:465


修复弱 DH 密钥

  1. 你可能会收到来自 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

我希望这可以为某人解决这个问题。:)

相关内容