Ssl 在ejabberd中安装TLS证书以进行STARTTLS协商
我读到ejabberd建议使用STARTTLS协商来实现通信实体之间的安全连接。当我安装ejabberd时,默认情况下它附带一个TLS证书 那么,为什么我需要购买证书才能安装?既然我们有默认证书,那么从证书颁发机构购买新证书的目的是什么Ssl 在ejabberd中安装TLS证书以进行STARTTLS协商,ssl,xmpp,ejabberd,starttls,Ssl,Xmpp,Ejabberd,Starttls,我读到ejabberd建议使用STARTTLS协商来实现通信实体之间的安全连接。当我安装ejabberd时,默认情况下它附带一个TLS证书 那么,为什么我需要购买证书才能安装?既然我们有默认证书,那么从证书颁发机构购买新证书的目的是什么 当我在计算机上部署ejabberd时,默认证书将如何用于我的域?客户端将如何验证默认证书?您可以将ejabberd与SSL/STARTTLS一起使用,并提供TLS证书。但是,该证书只是一个自签名证书。这意味着: 您仍然能够加密客户端和服务器之间的通信量 您的客户
当我在计算机上部署ejabberd时,默认证书将如何用于我的域?客户端将如何验证默认证书?您可以将ejabberd与SSL/STARTTLS一起使用,并提供TLS证书。但是,该证书只是一个自签名证书。这意味着:
但是,即使计划使用自签名证书,也不要使用默认的ejabberd自签名证书。ejabberd提供的证书与您自己的域不匹配。您至少应该生成与实际XMPP域相匹配的自签名证书:客户端将验证证书是否针对Jabber ID(JID)的域名颁发,该域名是“@”后面的部分。(还有其他选项,但它们与浏览器供应商针对CAs实施的策略不兼容,因此不实用。) 除非您已经与证书颁发机构(CA)建立了业务关系,否则我建议任何人使用并远离自签名证书 可以在链接的wiki页面中找到一些关于自动执行此操作并对Let's Encrypt服务器友好的说明 摘要(假设您正在运行Ubuntu 16.04 LTS,希望在域example.org上运行它,并且只使用ejabberd的证书): 使用以下内容创建
/usr/local/sbin/auto-renew-letsencrypt
:
#!/bin/bash
# Renew all Let's Encrypt certificates which are due for renewal
t=`mktemp`
# Try to be quiet unless an error is returned
letsencrypt renew > $t || cat $t
# Hooks are not yet supported by `letsencrypt` shipping with Ubuntu 16.04 LTE
# Crudely emulate --renew-hook; breaks if diagnostic messages change
if grep -q "The following certs have been renewed" $t; then
cat /etc/letsencrypt/live/example.org/{privkey,fullchain}.pem > /etc/ejabberd/ejabberd.pem
service ejabberd reload
fi
rm $t
#!/bin/bash
#更新所有到期的证书,让我们加密这些证书
t=`mktemp`
#除非返回错误,否则尽量保持安静
letsencrypt续订>$t | | cat$t
#Ubuntu 16.04 LTE附带的“letsencrypt”还不支持挂钩
#粗略模拟——更新挂钩;如果诊断消息更改,则中断
如果grep-q“以下证书已更新”$t;然后
cat/etc/letsencrypt/live/example.org/{privkey,fullchain}.pem>/etc/ejabberd/ejabberd.pem
服务ejabberd重新加载
fi
rm$t
运行以下命令创建并激活证书和自动续订
apt install letsencrypt
letsencrypt certonly --standalone --domain example.org
cat /etc/letsencrypt/live/example.org/{privkey,fullchain}.pem > /etc/ejabberd/ejabberd.pem
chown ejabberd:ejabberd /etc/ejabberd/ejabberd.pem
chmod 640 /etc/ejabberd/ejabberd.pem
chmod 755 /usr/local/sbin/auto-renew-letsencrypt
echo $(($RANDOM % 60)) $((RANDOM % 6)) "* * * root /usr/local/sbin/auto-renew-letsencrypt" > /etc/cron.d/auto-renew-letsencrypt
apt安装letsencrypt
letsencrypt certonly--独立--domain example.org
cat/etc/letsencrypt/live/example.org/{privkey,fullchain}.pem>/etc/ejabberd/ejabberd.pem
chown-ejabberd:ejabberd/etc/ejabberd/ejabberd.pem
chmod 640/etc/ejabberd/ejabberd.pem
chmod 755/usr/local/sbin/auto-renew-letsencrypt
echo$($RANDOM%60))$($RANDOM%6))“***root/usr/local/sbin/auto-renew-letsencrypt”>/etc/cron.d/auto-renew-letsencrypt
@迈克尔解释得很好。为什么您建议不要使用ejabberd证书?背后有什么具体原因吗?提供的自我证书使用的是一个通用域,而不是您的实际域。最好至少在证书中使用您自己的域。另请参阅本节末尾和ejabberd 17.11的发布信息,网址为