我目前有一个免费的 StartSSL 证书用于我的邮件服务器(postfix/dovecot)。当然,它工作正常,但 Let's Encrypt 证书使用起来更容易、更快捷。我的 Apache 服务器也使用 Let's Encrypt 证书。
那么,如果我决定为我的服务器使用 Let's Encrypt 证书,其他邮件服务器会拒绝我的电子邮件吗?Let's Encrypt 证书在邮件世界有多少被接受?
我知道每个最近的网络浏览器都接受 Let's Encrypt 证书。因此,Let's Encrypt 证书适用于网络。除非用户使用 Windows XP 并使用当时的通用浏览器,否则 Web 将在没有浏览器诊断的情况下正确显示。
但是邮件服务器呢?有没有人有让我们加密邮件证书的经验?具体来说,我关心的不是像 Gmail、Yahoo 或 Hotmail 这样的大公司,而是其他公司的其他私人服务器,它们可能不接受我的证书。
注意我还担心旧邮件客户端,如 Outlook 2007(我的一些客户还在使用它们,甚至 Outlook Express)和智能手机(iPhone 或 Android)。
ON -TOPIC EXTRA问题确实Microsoft产品委托证书管理的OS或其他微软产品?因为如果我没记错的话,至少在 Outlook 2003 和/或 2007 上,证书管理由 IE 浏览器负责;如果我也记得很清楚,在像 Firefox 这样的浏览器上安装用户证书,也有效地在操作系统本身上安装了证书(因为我认为它在系统范围内可用)。所以,如果我是对的,即使我的客户有一个旧的邮件客户端,证书也必须被自动接受(猜测他肯定有一个接受让我们加密 CA 的现代网络浏览器),因为来自 Chrome 的根 CA 或Firefox 在系统范围内可用。
简而言之:我应该冒险为我的邮件服务器转移到 Let's Encrypt 还是我至少再等一年。
我有一个nginx符合以下要求的网站:
为了满足(1)我的配置中有一个小的 http->https 重定向nginx。为了满足 (2) 我需要修改上述配置,以便我可以使用 webroot Let's Encrypt 身份验证方法。
我试图找出满足这两个要求的最佳解决方案。我想出了以下方法,这很有效。
前:
server {
listen 80;
server_name example.com;
return 301 https://example.com$request_uri;
}
Run Code Online (Sandbox Code Playgroud)
后:
server {
listen 80;
server_name example.com;
location ~ /\.well-known\/acme-challenge {
root /usr/share/nginx/html;
allow all;
}
if ($request_uri !~ /\.well-known) {
return 301 https://example.com$request_uri;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我希望找到另一种方法。原因如下:
如果是邪恶的。在这种情况下可能不是什么大问题,因为这只是 http->https 重定向,应该是非常低的流量。
更重要的是,避免if将更容易将 webroot 身份验证绑定到我后面运行的所有站点,nginx因为我可以将该location指令放入 a 中.conf,然后我可以在我所有的 …
我使用以下配置在所有虚拟主机上启用 letencrypt 支持:
ProxyPass /.well-known/acme-challenge !
Alias /.well-known/acme-challenge/ /var/www/letsencrypt/.well-known/acme-challenge/
<Directory "/var/www/letsencrypt/.well-known/acme-challenge/">
Options None
AllowOverride None
ForceType text/plain
RedirectMatch 404 "^(?!/\.well-known/acme-challenge/[\w-]{43}$)"
</Directory>
Run Code Online (Sandbox Code Playgroud)
这适用于除 gitlab 之外的所有主机(主要是 php 或静态站点)
我正在使用这个配置:https : //github.com/gitlabhq/gitlab-recipes/blob/master/web-server/apache/gitlab-ssl-apache24.conf
我的猜测是这个配置部分有问题:
<Location />
# New authorization commands for apache 2.4 and up
# http://httpd.apache.org/docs/2.4/upgrading.html#access
Require all granted
#Allow forwarding to gitlab-workhorse
ProxyPassReverse http://127.0.0.1:8181
ProxyPassReverse http://YOUR_SERVER_FQDN/
</Location>
Run Code Online (Sandbox Code Playgroud)
但解决这个问题的最佳方法是什么?
我正在尝试更新我的 Letencrypt 证书并收到以下错误:
远程错误:tls:握手失败
我该如何解决?
我正在尝试使用 DNS 身份验证更新/创建 letencrypt 证书:
certbot-auto -d xxx.it -d mail.xxx.it --manual --preferred-challenges dns certonly
Run Code Online (Sandbox Code Playgroud)
但是,在插入请求的记录后:
Please deploy a DNS TXT record under the name
_acme-challenge.mail.xxx.it with the following value:
yB_EQ-wiB0NzNUVwiyfiabeIOqIXx3fWKiia1uHGesE
Before continuing, verify the record is deployed.
Run Code Online (Sandbox Code Playgroud)
挑战失败。
确实,如果我尝试:
$ dig_acme-challenge.mail.xxx.it TXT
Run Code Online (Sandbox Code Playgroud)
尽管区域文件包含记录,但请求也会失败:
# fgrep TXT /var/named/chroot/var/named/master/xxx.it
acme-challenge.mail.xxx.it IN TXT "yB_EQ-wiB0NzNUVwiyfiabeIOqIXx3fWKiia1uHGesE"
Run Code Online (Sandbox Code Playgroud)
我假设 BIND (bind-9.8.2-0.62.rc1.el6_9.4.x86_64) 以某种方式拒绝提供带有前导下划线的记录,但文档/谷歌没有帮助。
有任何想法吗?
编辑正如下面的答案所指出的,区域记录中的主机部分需要有一个尾随点或将域部分剥离。照顾好你复制和粘贴。
可能是一个愚蠢的问题,但是:更新 Let's encrypt 证书和获得新证书之间的区别在哪里?
此问题的相关问题和背景:我是否需要保留来自 certbot 的帐户数据?只要我可以验证我的域,我就会获得一个新证书。
我错过了什么?
我正在尝试通过命令在我的 Amazon ec2 RHEL nginx 服务器上设置让我们加密,$ sudo yum install certbot-nginx但它一直失败:
$ sudo yum install certbot-nginx
Last metadata expiration check: 2:58:11 ago on Sat 17 Aug 2019 11:29:45 PM UTC.
Error:
Problem: conflicting requests
- nothing provides pyparsing needed by python2-certbot-nginx-0.36.0-1.el7.noarch
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
Run Code Online (Sandbox Code Playgroud)
在网上做了一些绊脚石之后,我安装了各种 python 和 pip 包(完整列表如下)。知道我可能会错过什么吗?
这是我的操作系统详细信息,然后是安装的 python 和 pip 包...
$ cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="8.0 (Ootpa)"
ID="rhel"
ID_LIKE="fedora" …Run Code Online (Sandbox Code Playgroud) 我有一台使用 certbot/letsencrypt 证书支持 HTTPS 的服务器。
我正在进行一般软件升级,以便最大限度地减少风险和停机时间,我在新服务器上安装新版本,并在其中导入实时服务器数据进行测试。当一切正常后,我将更改 DNS 记录以指向新服务器。
我的问题是我应该怎么办证书?我可以复制现有的并在必要时更新它吗?或者证书是否会不兼容和/或 LE 会抱怨地址在自动续订过程中已更改?LE 对反向 DNS 是否敏感(反向 DNS 工作可能需要更多延迟)。难道还有什么问题是我没有想到的吗?
我发现了很多类似的问题,人们询问如何在不同端口(80/443 除外)上设置 SSL,即1234端口。然而,所有答案都是类似use redirection或proxying requests或dns-validation (instead of http)或使用替代方法。然而,你在 StackExchange 中找不到任何一个答案 ,我的意思是对于新手来说一步一步,如何做到这一点。
但是,请注意,重定向不是解决方案,因为在 80/443 上,一个人可能有一个常规网站,但在 1234 端口上有一个完全不同的应用程序。那么,仅仅从1234到 的“重定向”80就会弄乱网站,对吗?
我刚刚向 cloudflare 添加了一个新域,边缘证书是 Let's encrypt r3,显示在控制面板中,并在域的网站上通过浏览器进行检查。
我现有的域名仍然具有常规的 1 年期证书。不知道过期后他们是否会切换到让我们加密。
还有其他人注意到吗?
lets-encrypt ×10
certbot ×4
nginx ×3
ssl ×2
apache-2.4 ×1
bind ×1
cloudflare ×1
email-server ×1
pip ×1
postfix ×1
python ×1
redhat ×1