我们的 AKS 集群配置为通过 Ingress Cert-Manager 注释自动续订 Let's Encrypt 证书,在我们升级到 AKS 1.20.7 之前,该功能一直运行良好。然后它停止工作,证书开始过期而没有更新 - 我仔细检查了 K8S 和 CertManager API 的所有更改并审查了所有 YAML,但我没有看到任何明显错误。将不胜感激任何指点。
\n我的理解是,只要我将“cert-manager.io/cluster-issuer:letsencrypt-prod-p9v2”添加到我的入口中 - 整个更新应该自动发生 - 但这并没有发生。
\n> kubectl cert-manager version\nutil.Version{GitVersion:"v1.4.0", GitCommit:"5e2a6883c1202739902ac94b5f4884152b810925", GitTreeState:"clean", GoVersion:"go1.16.2", Compiler:"gc", Platform:"linux/amd64"}\n\nAKS version: 1.20.7\n\ncat shipit-ingress-p9v2.yaml\n\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n annotations:\n certmanager.k8s.io/cluster-issuer: letsencrypt-prod-p9v2\n kubernetes.io/ingress.class: nginx\n nginx.ingress.kubernetes.io/proxy-body-size: 15m\n nginx.ingress.kubernetes.io/rewrite-target: /\n nginx.org/client-max-body-size: 15m\n generation: 4\n name: shipit-ingress-p9v2\n namespace: supplier\n resourceVersion: "147087245"\n uid: 6751dbff-83b1-48a1-a467-e75cc843ee79\nspec:\n rules:\n - host: xxx.westeurope.cloudapp.azure.com\n http:\n paths:\n - backend:\n service:\n name: planet9v2\n port:\n number: 8080\n path: /\n pathType: ImplementationSpecific\n …Run Code Online (Sandbox Code Playgroud) 从 2021 年 10 月 1 日起,我遇到了 PHPMailer 突然说我的证书已过期并拒绝使用 TLS 加密正确连接到端口 587 的问题。
将 ssl 标志更改为 not verify_peer 和 not verify_peer_name 将临时修复电子邮件问题。
$mail->SMTPOptions = array (
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
));
Run Code Online (Sandbox Code Playgroud)
但这并不是一个理想的解决方案。
如果我通过端口 80 和 Web 访问同一服务器,则证书没有任何问题。
如果我使用 OpenSSL 命令行连接,它会显示证书已于 2021 年 9 月 30 日过期。
这个问题也出现在php命令file_get_contents下。
注意:这个问题是 PHPMailer 和电子邮件特定的,并提供了有关 PHPMailer 的良好信息,不应将其关闭。除了原因和修复类似之外,它与 docker 或与其相关的其他问题无关。
每当我使用 certbot 进行测试时,我都担心会超出速率限制,从而导致我的帐户受到限制。所以我同时使用--dry-run和--staging选项。
这在许多其他问题和教程中都得到了体现——而且由于它有效,我从不担心它。
但我确信它们之间有区别......它是什么?
我已经使用letsencrypt为ubuntu上的最新nginx安装了SSL证书.设置很好,除了以下情况外,效果很好:
我不太了解SSL以了解发生了什么,但我怀疑:我已经为Apache安装了SSL证书了一段时间,刚刚转移到Nginx,因为它支持http/2.由于nginx插件不稳定但我必须自己安装证书,这就是我所做的:
在我的nginx config(/etc/nginx/conf/default.conf)中,我添加了:
server {
listen 80;
server_name [domain];
return 301 https://$host$request_uri;
}
server {
listen 443 http2;
listen [::]:443 http2;
server_name [domain];
ssl on;
ssl_certificate /etc/letsencrypt/live/[domain]/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/[domain]/privkey.pem;
}
Run Code Online (Sandbox Code Playgroud)
是否有可能以某种方式打破链条?这里的正确方法是什么?
多谢你们
根据本指南,我已经在数字海洋上启动并运行了解析服务器.配置mongo db进行迁移时,执行以下命令:
sudo cat /etc/letsencrypt/archive/domain_name/{fullchain1.pem,privkey1.pem} | sudo tee /etc/ssl/mongo.pem
Run Code Online (Sandbox Code Playgroud)
之后教程说:
续订Let's Encrypt证书后,您将不得不重复上述命令.如果您配置Let的加密证书的自动续订,请记住包括此操作.
为了做到这一点,我在我的let的加密cronjobs中添加了一个cronjob,如下所示:
30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
33 2 * * 1 cat /etc/letsencrypt/archive/DOMAIN/{fullchain1.pem,privkey1.pem} | tee /etc/ssl/mongo.pem
35 2 * * 1 /etc/init.d/nginx reload
Run Code Online (Sandbox Code Playgroud)
但是,在星期一重新启动服务器后,mongod将无法启动,因为它无法找到/读取/etc/ssl/mongo.pem.
如何正确设置?我是否需要在另一个cronjob中chown/chmod该文件?
谢谢你的帮助!
我刚刚将SSL证书(通过加密certbot生成的SSL证书)从一台服务器(A)复制到了另一台(B)。因此,我在新服务器中创建了一个自定义目录,假设/home/my-certificate/,然后将fullchain.pemand privkey.pem从(A)复制到(B)。一切正常,服务器处于活动状态,证书正常。现在,我想在新服务器(B)上启用自动更新。我怎样才能做到这一点?
在 NGINX 服务器中出现以下错误,使用 LetsEncrypts 免费 SSL 证书。
2016/06/23 19:53:13 [warn] 5013#0:“user”指令只有在主进程以超级用户权限运行时才有意义,在 /etc/nginx/nginx.conf:1 中被忽略
2016/06/23 19:53:13 [emerg] 5013#0:BIO_new_file("/etc/letsencrypt/live/abc/fullchain.pem") 失败(SSL:错误:0200100D:系统库:fopen:权限被拒绝: fopen('/etc/letsencrypt/live/abc/fullchain.pem','r') error:2006D002:BIOroutines:BIO_new_file:system lib)
我最近向我的服务器添加了LetsEncrypt证书,并且我的java小程序在使用TLS连接时遇到问题。
我的小程序使用Apache HttpClient。
我的Web服务器是Apache 2,4,我将一些虚拟主机设置为我的主域(foo.com-不是我的真实域名)的子域。
当我在暂存子域上运行小程序(例如,它从https://staging.foo.com运行)时,出现以下错误:
javax.net.ssl.SSLException: Certificate for <staging.foo.com> doesn't match any of the subject alternative names: [developer.foo.com]
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:165)
at org.apache.http.conn.ssl.BrowserCompatHostnameVerifier.verify(BrowserCompatHostnameVerifier.java:61)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:141)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:114)
at org.apache.http.conn.ssl.SSLSocketFactory.verifyHostname(SSLSocketFactory.java:580)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:554)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:412)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:179)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:328)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:612)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:447)
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:884)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
...(cut)
at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at javax.swing.SwingWorker.run(SwingWorker.java:334)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
我不知道是怎么回事。
首先,我不知道Java如何知道developer.foo.bar是我的虚拟主机之一(尽管按字母顺序,这是第一个启用SSL的虚拟主机)。
我查看了staging.foo.com的证书详细信息,“主题备用名称”字段下列出的唯一名称是staging.foo.com。
那么从哪里获得developer.foo.com呢?
以及如何解决此问题?
我在OS X El Capitan 10.11.6上使用Firefox和以下Java插件版本信息:
Java Plug-in 11.102.2.14 x86_64
Using JRE version 1.8.0_102-b14 …Run Code Online (Sandbox Code Playgroud) 尝试运行命令时,我得到了这个奇怪的letsencrypt错误
$ certbot certonly --standalone --email example@gmail.com --agree-tos -n -d trumporate.com,www.trumporate.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Obtaining a new certificate
Performing the following challenges:
tls-sni-01 challenge for trumporate.com
tls-sni-01 challenge for www.trumporate.com
Waiting for verification...
Cleaning up challenges
Failed authorization procedure. trumporate.com (tls-sni-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Timeout, www.trumporate.com (tls-sni-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Timeout
IMPORTANT NOTES:
- …Run Code Online (Sandbox Code Playgroud) 我的网站在端口80(http)上运行,我正在使用nginx没有任何问题.下面是我在nginx中使用的默认文件
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我打算使用https并下载Lets加密证书.目前我无法访问该网站.我收到了以下错误.
*[错误] 754#754:1上游过早关闭连接,同时从上游读取响应头,客户端:xxx.xx.xxx.xxx,server:example.com,请求:"GET /favicon.ico HTTP/2.0",上游:"h ttp://127.0.0.1:3000/favicon.ico",主持人:"www.exapmple.com",推荐人:" https://www.example.com/ "
以下是我的nginx默认文件
# HTTP — redirect all traffic to HTTPS
server {
listen 80;
listen [::]:80 default_server ipv6only=on;
return 301 https://$host$request_uri;
}
server {
listen 443 default_server ssl;
listen [::]:443 ssl http2;
server_name example.com www.example.com;
# certs sent to the client in SERVER HELLO are …Run Code Online (Sandbox Code Playgroud) lets-encrypt ×10
ssl ×6
nginx ×5
amazon-ec2 ×1
applet ×1
azure-aks ×1
cert-manager ×1
certbot ×1
cron ×1
https ×1
java ×1
kubernetes ×1
mongodb ×1
node.js ×1
openssl ×1
php ×1
phpmailer ×1
ubuntu ×1