我有一个小型 Rails 应用程序,可以在我们的平台上执行各种检查,并在出现问题时向我发送电子邮件。一切都运行良好,直到今天我开始收到有关以下错误的警报:
SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate has expired)
Run Code Online (Sandbox Code Playgroud)
现在的问题是,有问题的证书是有效的,它会自动更新(让我们加密),并且此代码已经好几年没有被修改过,之前从未出现过任何问题,突然之间就开始发生这种情况。
抛出异常的代码:
def get_request url
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
#more than 10 seconds this is too slow
http.open_timeout = 10
http.read_timeout = 10
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
if response.code.to_i == 200
return true
else
puts "Failed to GET #{url}: #{response.code.to_i}"
return false
end
end
Run Code Online (Sandbox Code Playgroud)
如果我在浏览器中打开该站点,它会显示安全连接,没有问题,并显示正在使用有效的证书,此外,如果我检查,certbot我会得到以下信息:Expiry Date: 2021-11-22 17:48:58+00:00 (VALID: 52 days)很明显,证书是有效的,为什么 Rails 突然发脾气它?
请注意,我已经重新启动了 Nginx,以防万一,但这没有帮助。 …
我正在尝试设置一个自托管的 GitLab 实例,除了尝试使用 Let's encrypt 创建 https 连接时,一切正常。尝试重新配置 GitLab 实例时出现以下错误:
There was an error running gitlab-ctl reconfigure:
letsencrypt_certificate[gitlab.***.org] (letsencrypt::http_authorization line 6) had an error: Acme::Client::Error::AccountDoesNotExist: acme_certificate[staging] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/letsencrypt/resources/certificate.rb line 41) had an error: Acme::Client::Error::AccountDoesNotExist: No account exists with the provided key
Run Code Online (Sandbox Code Playgroud)
我的 external_url=https://gitlab.***.org,在我的网络上,我为端口 :80 和 :443 设置了端口转发。我还将 DNS 设置为我的 IP,这是因为在不安全的情况下可以访问该站点。
希望有人认识到这个错误,我查了一下,没有看到它在任何地方弹出。
此致
我有一个与第三方网络服务集成的 Rails 应用程序。自最初开发以来,它多年来一直运行良好。由于某种意想不到的原因,它突然停止工作了。我想说我们还没有改变代码中的任何内容。唯一可以与之相关的是我们的 Letscrypt SSL 证书已过期并且我们更新了它。
\n事实是 I\xc2\xb4m 在调用 Web 服务请求时收到此错误:
\nE, [2022-02-17T19:53:25.385435 #32501] ERROR -- : SSL_connect returned=1 errno=0 state=error: certificate verify failed\nE, [2022-02-17T19:53:25.385876 #32501] ERROR -- : /Users/Rober/.rvm/gems/ruby-2.4.9/gems/httpi-2.4.4/lib/httpi/adapter/httpclient.rb:28:in `rescue in request\'\nE, [2022-02-17T19:53:25.386103 #32501] ERROR -- : /Users/Rober/.rvm/gems/ruby-2.4.9/gems/httpi-2.4.4/lib/httpi/adapter/httpclient.rb:24:in `request\'\nE, [2022-02-17T19:53:25.386358 #32501] ERROR -- : /Users/Rober/.rvm/gems/ruby-2.4.9/gems/httpi-2.4.4/lib/httpi.rb:161:in `request\'\nE, [2022-02-17T19:53:25.386658 #32501] ERROR -- : /Users/Rober/.rvm/gems/ruby-2.4.9/gems/httpi-2.4.4/lib/httpi.rb:127:in `get\'\nE, [2022-02-17T19:53:25.386909 #32501] ERROR -- : /Users/Rober/.rvm/gems/ruby-2.4.9/gems/wasabi-3.5.0/lib/wasabi/resolver.rb:43:in `load_from_remote\'\nE, [2022-02-17T19:53:25.387150 #32501] ERROR -- : /Users/Rober/.rvm/gems/ruby-2.4.9/gems/wasabi-3.5.0/lib/wasabi/resolver.rb:33:in `resolve\'\nE, [2022-02-17T19:53:25.387349 #32501] ERROR -- : /Users/Rober/.rvm/gems/ruby-2.4.9/gems/wasabi-3.5.0/lib/wasabi/document.rb:142:in `xml\'\nE, [2022-02-17T19:53:25.387606 #32501] ERROR …Run Code Online (Sandbox Code Playgroud) 我正在尝试找出如何在不中断用户/客户的情况下将网站/服务器从 digitalocean Droplet 迁移到 Azure (AKS)。
digitalocean 配置具有由 letencrypt (通过 serverpilot 管理)为主机名提供的 SSL 证书foo.example.com。
在新配置中:
ClusterIssuer已安装 ( cert-manager.io/v1)我不确定的是,当 digitalocean Droplet 中已经向同一主机颁发了证书时,我是否能够(间接通过 AKSClusterIssuer中)为现有主机名 ( ) 请求新证书?foo.example.com
我的直觉告诉我不,因为要进行完全的敌意接管,所需要做的就是掌握我们的 DNS 配置并为域设置证书......我正在尝试找出一种方法来测试/验证这一点,但对此的任何智慧都非常感激。
我的域名来自domains.google.com. 假设它是mydomainname.com
我将 DNS 设置为我想要的 IP 地址。在我的路由器上,我将端口转发80到我的计算机80和443我的计算机的443. 为了确认它是公开可用的,我使用了不同的连接和设备,并且可以mydomainname.com毫无问题地访问。
然后我使用了他们网站docker-compose.yml中描述的文件。
当前latest指向v2.9.18
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '443:443'
- '81:81'
volumes:
- ./data/:/data
- ./letsencrypt:/etc/letsencrypt
Run Code Online (Sandbox Code Playgroud)
现在,在 SSL 证书选项卡上,添加 SSL 证书时,测试服务器可访问性始终失败,并出现以下错误:
mydomainname.com: There is no server available at this domain.
Please make sure your domain exists and points to the IP where your NPM
instance is running …Run Code Online (Sandbox Code Playgroud) 我有一个运行cert-manager1.11.0 和Traefik2.9.6 的 Kubernetes (v1.25.2) 集群。对于某些服务,我想Let's Encrypt自动签署证书。出于某种原因,使用IngressRoute而不是感觉更好Ingress。我只是无法让 IngressRoute 创建证书。
现在,我有一个ClusterIssuer:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: my@email.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: traefik
Run Code Online (Sandbox Code Playgroud)
并且,工作,对应Ingress:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-name-websecure
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
ingressClassName: traefik
rules:
- host: my.host.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: linkingservice
port:
number: 80
tls:
- …Run Code Online (Sandbox Code Playgroud) 我使用了“让我们加密”功能来允许我在服务器上设置SSL / HTTPS。
问题是我也运行了许多子域,这些都包括在初始安装中,但是现在回头看看-证书详细信息显示它是颁发给我的一个子域的。
我想将其更改为我的基本域,但是我不确定如何执行此操作。
我试过跑步 letsencrypt-auto --apache -d example.me -d www.example.me -d mysql.example.me
该过程已完成,但未更改任何内容,因为证书已经颁发。
我现在如何更改证书,或重新颁发证书,以便将其发布到我的基本域?
我成功使用certbot-nginx插件。
我知道它是开源的,托管在github上。
但是我没有足够的技能来分析此代码。
例如:
我有几个由nginx代理的内部站点。所有virtualhost配置均具有以下匿名访问限制:
allow 192.168.1.0/24;
allow 192.168.0.0/24;
allow 10.88.0.0/16;
allow 127.0.0.1;
# gate1.example.com
allow X.X.X.X;
# gate2.example.com
allow X.X.X.X;
# other gate's
# .......
deny all;
Run Code Online (Sandbox Code Playgroud)
此访问限制禁止letencrypt服务器以及所有其他未定义的主机。
但是certbot renew --nginx正常执行证书更新。
它是如何工作的 ?
是否安全?
我刚刚使用letsencrypt-win-simple.V1.9.1在IIS 8(Windows Server 2012)中添加了证书.Google Chrome中没有问题,但在Firefox中,连接不受信任.
我遵循了这个教程:https://weblog.west-wind.com/posts/2016/feb/22/using-lets-encrypt-with-iis-on-windows#TheEasyWay : LetsEncrypt-Win-Simple.
firefox ssl-certificate iis-8 windows-server-2012-r2 lets-encrypt
lets-encrypt ×10
ssl ×3
certbot ×2
nginx ×2
openssl ×2
apache ×1
azure ×1
azure-aks ×1
cert-manager ×1
firefox ×1
gitlab ×1
iis-8 ×1
ruby ×1
traefik ×1
ubuntu-14.04 ×1