我想做什么:
现在我使用的是自签名 SSL 证书,效果很好。但我想用官方的lets encrypt.
我有什么(自签名证书): 这是我现在拥有的 ssl 的重要设置 (local.ini) 的输出:
[daemons]
; enable SSL support by uncommenting the following line and supply the PEM's below.
; the default ssl port CouchDB listens on is 6984
httpsd = {couch_httpd, start_link, [https]}
[ssl]
cert_file = /etc/couchdb/certs/server.crt // these are my self made certificates
key_file = /etc/couchdb/certs/server.key // these are my self made certificates
; set to true to validate peer certificates
verify_ssl_certificates = false
; Path to file containing …Run Code Online (Sandbox Code Playgroud) 我想通过 获得证书,letsencrypt.sh所以我必须提供关于 HTTP 的挑战。
我已经使用 NGINX 转发到 SSL(在nodejs服务器上提供)。现在我仍然想将所有内容重定向到 SSL,但不是挑战。
这是我的配置
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
server_name screen.example.com;
location /.well-known { }
location / {
return 301 https://$server_name$request_uri;
}
}
Run Code Online (Sandbox Code Playgroud)
打开质询 URL 仍会将我重定向到 HTTPS。
我怎样才能解决这个问题?
我正在使用certbot --webroot插件并certbot renew更新证书,它确实有效,但看起来httpd正在缓存证书并且没有“看到”它已被更新。
是否有httpd重新加载证书的信号?
ps 我不想重启httpd以避免停机。
我有一个这样的服务器文件
server {
listen 80;
server_name subdomain.example.com;
return 301 https://$server_name$request_uri;
location /.well-known/acme-challenge {
root /var/www/letsencrypt;
}
}
Run Code Online (Sandbox Code Playgroud)
现在当我尝试sudo letsencrypt renew. 它抛出并错误说 can't find .well-known/acme-challenge。但是一旦我评论该return 301行就重新启动了服务器并且它起作用了。
现在我想重新测试它把位置放在第一位而不是评论返回 301 语句,但它说certificate not due for renewal。所以问题是读取文件的顺序,重要吗?并且不会因为我这个原因自动更新,那些更新的你如何处理这种情况?
我正在尝试_acme-challenge.www在 Google Domains 上创建一个带有名称的 TXT DNS 记录,以允许我验证我的 DNS(即通过_acme-challenge.www.example.com)。我已经验证了域本身;但想要验证www子域,以便我可以在证书的主题备用名称中提供它。尝试此操作时,页面给出错误:Failed to save changes to domain settings for example.com。
我正在尝试的内容是否有效/如果是这样,有人可以建议我可能遗漏了什么吗?
domain-name-system subdomain txt-record lets-encrypt google-domains
为了支持自动 LetsEncrypt 证书续订,certbot 使用--apache处理程序。
例如
certbot renew --apache
Run Code Online (Sandbox Code Playgroud)
该处理程序在 Apache 服务器上为*/.well-known/acme-challenge/安装一个临时 VirtualHost ,以验证续订。
问题是,如果现有虚拟服务器使用安装在 http 服务器根目录上的 HTTPS 和 Django over WSGI,则此机制不起作用。
临时 VirtualHost 无法捕获 URL,因此 Django 尝试为请求提供服务(但失败),因为该 URL 不在其 URL 列表中。
有人可以解释为什么 Certbot 使用以下重定向配置
server {
if ($host = example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name example.com;
listen 80;
return 404; # managed by Certbot
}
Run Code Online (Sandbox Code Playgroud)
而不是简单地这个?
server {
server_name example.com;
listen 80;
return 301 https://$host$request_uri;
}
Run Code Online (Sandbox Code Playgroud)
server_name基本上说这个配置只适用于 example.com,所以$host永远不会有什么不同,或者我错过了什么?
我已经运行 openLDAP 服务器几个月了,我们使用它来验证许多应用程序。以前的工作人员设置了服务器,它似乎不是标准安装,但非常简单。
最近我们的一个 CA 证书过期了,我们决定用 Let's Encrypt 替换它。我的经理更换了服务器上的证书。
它适用于 Web 应用程序(LDAP 管理器、自助服务密码更改),但是没有客户端可以对其进行身份验证。例如,如果我尝试测试 Redmine LDAP 配置,我会收到一条消息“无法连接(SSL_connect SYSCALL 返回=5 errno=0 state=SSLv2/v3 read server hello A)”
针对它测试 Nexus 身份验证它只是无法连接。
令人沮丧的是,LDAP 服务器或应用程序的日志中没有任何内容表明失败的原因。我的调查使我相信这与证书/密钥的配置方式有关,但我已经尝试了我能想到的所有方法以及我可以在网上找到的所有方法,但没有任何效果。
环境详情如下:
Debian 8 openLDAP openldap-2.4.40
我的配置如下:
/etc/ldap/ldap.conf
# LDAP Defaults
#
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
#BASE dc=example,dc=com
#URI ldap://ldap.example.com ldap://ldap-master.example.com:666
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never
# TLS certificates (needed for GnuTLS)
TLS_CACERT /etc/letsencrypt/live/myserver.com/fullchain.pem
Run Code Online (Sandbox Code Playgroud)
/etc/ldap/slapd.d/cn=config.ldif
dn: cn=config
objectClass: olcGlobal …Run Code Online (Sandbox Code Playgroud) 我有一个经过良好测试的 bash 脚本,直到几周前它都运行良好。
似乎 certbot 挑战现在默认为 http 而不是 https。我想不通原因。
echo 'rsa-key-size = 2048
renew-hook = /usr/sbin/ipsec reload && /usr/sbin/ipsec secrets
' > /etc/letsencrypt/cli.ini
certbot certonly --non-interactive --agree-tos --email $EMAIL --standalone -d $VPNHOST
Run Code Online (Sandbox Code Playgroud)
防火墙设置:
Firewall stopped and disabled on system startup
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere state NEW recent: UPDATE seconds: 60 hit_count: 12 name: DEFAULT side: source mask: 255.255.255.255
all -- anywhere anywhere state NEW recent: SET name: DEFAULT side: source …Run Code Online (Sandbox Code Playgroud) 几个月前,我开始收到数十名用户的投诉,称在连接到我的网站时出现错误。当我查看 nginx 的 error.log 时,我看到每日 SSL 错误:
我不知道什么会导致这个问题,因为 99% 的用户都通过了,而且我自己似乎无法复制它。一位用户表示,改用 VPN 解决了他的问题。stackoverflow 上的其他帖子表明,来自同一 IP 的恶意请求会发生这种情况,但这里的情况并非如此。
有谁知道解决这个问题吗?
(我已经几个月没有对此服务器/配置进行任何更改了。)
网络服务器在 Ubuntu 20.10 上运行
2022/04/16 04:40:19 [crit] 809329#809329: *13542487 SSL_do_handshake() failed (SSL: error:141CF06C:SSL routines:tls_parse_ctos_key_share:bad key share) while SSL handshaking, client: 138.197.194.139, server: 0.0.0.0:443
2022/04/16 04:40:32 [crit] 809329#809329: *13542919 SSL_do_handshake() failed (SSL: error:141CF06C:SSL routines:tls_parse_ctos_key_share:bad key share) while SSL handshaking, client: 38.132.118.76, server: 0.0.0.0:443
2022/04/16 04:58:54 [crit] 809329#809329: *13564742 SSL_do_handshake() failed (SSL: error:141CF06C:SSL routines:tls_parse_ctos_key_share:bad key share) while SSL handshaking, client: 165.227.227.95, server: 0.0.0.0:443 …Run Code Online (Sandbox Code Playgroud) lets-encrypt ×10
nginx ×4
certbot ×2
apache-2.4 ×1
apache2 ×1
couchdb ×1
django ×1
httpd ×1
iptables ×1
ldap ×1
openldap ×1
openssl ×1
ssl ×1
subdomain ×1
txt-record ×1
ubuntu ×1
ubuntu-16.04 ×1
wsgi ×1