ssl-certificate - 构建失败:https://apt.puppetlabs.com,证书链使用过期证书
问题描述
今天下午我的构建开始失败,原因如下:
Notice: /Stage[main]/Server_init::Apt_get_update/Exec[apt-get-update]/returns:
Err:16 https://apt.puppetlabs.com bionic Release
Notice: /Stage[main]/Server_init::Apt_get_update/Exec[apt-get-update]/returns:
Certificate verification failed: The certificate is NOT trusted.
The certificate chain uses expired certificate. Could not handshake:
Error in the certificate verification. [IP: 13.33.171.122 443]
我假设过期的证书今天早上过期了,因为早期的成功构建。
我如何找出哪个证书失败了?我可以做些什么来更新它。这表示它是链中的某个证书,我认为这意味着它不一定是 apt.puppetlabs.com 的证书。
有什么方法可以让我暂时忽略这个 repo 上的证书,这样我就可以恢复我的票证工作,而不是这个新错误?
解决方案
可能有更方便的方法可以做到这一点,但这是我在证书链中找到断开链接的方法:
openssl s_client </dev/null -showcerts -connect apt.puppetlabs.com:443 -servername apt.puppetlabs.com | awk 'BEGIN { pem_to_text = "openssl x509 -noout -text" }; /BEGIN CERTIFICATE/ { on = 1 }; on == 1 { print $0 | pem_to_text }; /END CERTIFICATE/ { on = 0; close(pem_to_text) }'
在撰写本文时,链中的一个证书 ( CN = USERTrust RSA Certification Authority
) 已于格林威治标准时间 2020 年 5 月 30 日 10:48:38 过期。
但是请注意,在较新的操作系统版本(如 Ubuntu 20.04)上,该问题不会导致错误,因为该ca-certificates
软件包包含相同实体和公钥的更新 CA 证书,有效期至 1 月 18 日 23:59:59格林威治标准时间 2038 和较新版本的 libssl(OpenSSL)利用这一事实(似乎)来验证叶证书。
推荐阅读
- firebase - 向 Slack 发送 200 响应并继续运行 Firebase Cloud Function
- machine-learning - 检测器2中的训练损失没有减少
- python - ValueError:无法使用 dtype='numeric' 将字节/字符串数组转换为十进制数
- reactjs - 将 URL 绑定到给定状态的 React 组件
- postgresql - pg_dump 不排除表数据
- dashboard - thingsboard 仪表板、仪表板、仪表
- r - R在for循环中修改data.frame
- c# - C# 在 DataGridView 上显示我的自定义控件,即使不编辑
- apache-spark - Pyspark 没有从 kafka 流中打印任何数据,也没有失败
- excel - 捕获列中的最后填充日期(VBA)