HTTPS域名443端口证书到期问题排查与解决

ops/2025/2/5 20:53:19/

在现代Web开发中,HTTPS协议广泛用于确保客户端和服务器之间的通信安全。然而,HTTPS依赖于SSL/TLS证书来加密通信并验证网站的身份。当证书过期时,客户端可能会遇到连接错误。本文将介绍如何排查和解决因证书过期引起的问题,尤其是如何处理以下错误:https>https://i-blog.csdnimg.cn/direct/33eaec5e17044bbc804f6025123a83f2.png" width="1356" />

```
uploadStreamError: RequestCoreException: cURL error: Peer's Certificate has expired. (60)
```

## **1. 错误分析**https>https://i-blog.csdnimg.cn/direct/ffedb34f18f54735956455e87bbb82c2.png" width="2400" />

### 错误提示
错误信息中 `cURL error: Peer's Certificate has expired. (60)` 显示的是与证书相关的问题。这表示服务器端的SSL/TLS证书已经过期,导致无法建立安全的HTTPS连接。

`Peer's Certificate has expired` 表明,连接到的服务器的证书日期已经超过了有效期。

### 触发错误的场景

https>https://i-blog.csdnimg.cn/direct/e1a340d8aa9440eea1c939d50b6cbfc1.png" width="2194" />
这种错误通常在以下几种情况下发生:

1. **证书到期**:SSL/TLS证书的有效期过期,服务器无法提供有效的证书。
2. **客户端的证书验证配置问题**:客户端的证书验证未配置正确,可能导致忽略某些证书错误,或者验证不通过。
3. **服务器证书链不完整**:有时服务器可能没有正确配置证书链,导致客户端无法验证证书。
4. **中间证书丢失**:服务器上缺少适当的中间证书,导致证书验证失败。

## **2. 排查步骤**

### 步骤1:确认证书是否过期https>https://i-blog.csdnimg.cn/direct/dffa9937acd240d7840759f6ceb18d75.png" width="1946" />

首先,检查目标网站的SSL/TLS证书是否过期。你可以使用以下方法:

1. **浏览器检查**:在浏览器中访问网站并查看证书信息。大部分现代浏览器允许你点击地址栏左侧的锁图标,查看证书的详细信息,其中会显示证书的有效期。
2. **OpenSSL检查**:使用 `openssl` 命令行工具来查看证书信息。
   ```bash
   openssl s_client -connect example.com:443
   ```
   该命令会连接到服务器并显示服务器的证书信息,包括有效期。https>https://i-blog.csdnimg.cn/direct/11c271f571594843bc537130b05fbe9d.png" width="1516" />

3. **在线工具**:你也可以使用一些在线工具,如 [SSL Labs](https>https://www.ssllabs.com/ssltest/),来测试服务器证书是否过期以及其他SSL配置问题。

### 步骤2:检查客户端证书验证配置

如果证书未过期,但仍然收到上述错误,可能是客户端的cURL配置存在问题。确保客户端的 `cURL` 配置正确,能够正确验证证书。

1. **禁用证书验证**:如果你想暂时绕过验证,可以通过 `-k` 或 `--insecure` 标志来禁用证书验证。这应该只在测试环境中使用,不建议在生产环境中使用。
   ```bash
   curl -k https>https://example.com
   ```

2. **更新CA证书库**:如果客户端缺少正确的根证书或者证书链不完整,可以尝试更新CA证书库。对于Linux系统,可以使用如下命令更新:
   ```bash
   sudo apt-get update
   sudo apt-get install --reinstall ca-certificates
   ```

### 步骤3:检查服务器证书链

确保服务器的SSL证书链配置正确。服务器需要提供完整的证书链,包括根证书和所有中间证书。你可以使用如下命令来查看服务器的证书链:
```bash
openssl s_client -connect example.com:443 -showcerts
```
确保所有中间证书都已正确安装。

### 步骤4:更新或更换过期证书

如果确认证书已经过期,最直接的解决方法是更新服务器上的SSL/TLS证书。你可以从受信任的证书颁发机构(CA)获取新的证书并进行安装。具体步骤如下:

1. **购买新证书**:从受信任的证书颁发机构(如 Let's Encrypt、GlobalSign、DigiCert等)购买或申请新的SSL证书。
2. **安装证书**:根据服务器类型(如Apache、Nginx、IIS等)安装新的证书。每个Web服务器的安装方法稍有不同。
   - **Apache**: 修改配置文件,指定证书和密钥路径:
     ```apache
     SSLCertificateFile /path/to/certificate.crt
     SSLCertificateKeyFile /path/to/private.key
     SSLCertificateChainFile /path/to/chainfile.pem
     ```
   - **Nginx**: 在配置文件中指定证书和私钥路径:
     ```nginx
     ssl_certificate /path/to/certificate.crt;
     ssl_certificate_key /path/to/private.key;
     ```
3. **重启Web服务器**:配置完成后,重启Web服务器以使新证书生效。

## **3. 解决方法**

### 更新证书

1. 如果证书已过期,首先申请新的证书,安装并配置正确的证书链。
2. 在客户端,确保使用最新的根证书库,并在可能的情况下,禁用证书验证来暂时绕过问题。

### 配置cURL

如果是cURL客户端问题,可以通过以下步骤进行修复:

1. **确保cURL与正确的CA证书一起使用**:
   将CA证书路径传递给cURL:
   ```bash
   curl --cacert /path/to/ca-certificates.crt https>https://example.com
   ```

2. **禁用证书验证**(不推荐在生产环境中使用):
   ```bash
   curl -k https>https://example.com
   ```

## **4. 结论**https>https://i-blog.csdnimg.cn/direct/3bc6c914b6614aefaf62fe46ad418540.png" width="1348" />

遇到 `cURL error: Peer's Certificate has expired. (60)` 错误时,首先检查证书是否过期。如果证书过期,更新证书并确保服务器正确配置证书链。如果是客户端问题,检查客户端的证书验证配置,确保使用最新的根证书库。通过这些步骤,你应该能够顺利排查并解决HTTPS证书过期问题。


http://www.ppmy.cn/ops/155970.html

相关文章

CSS工程化概述

CSS的问题 类名冲突的问题 当你写一个 css 类的时候,你是写全局的类呢,还是写多个层级选择后的类呢? 你会发现,怎么都不好 过深的层级不利于编写、阅读、压缩、复用。过浅的层级容易导致类名冲突。 一旦样式多起来&#xff0…

【Linux】解决 apt-key 弃用问题:GPG 直接管理密钥代替 apt-key

引言 在 Linux 系统,尤其是 Debian 和 Ubuntu 中,APT(Advanced Package Tool)是广泛使用的包管理工具,负责安装、更新和管理系统软件包。历史上,apt-key 命令一直被用来管理 GPG 密钥,验证软件…

5.3.1 软件设计的基本任务

文章目录 软件设计解决的问题概要设计基本任务详细设计基本任务 软件设计解决的问题 需求分析解决“做什么”的问题,软件设计解决“如何做”的问题。软件设计分为概要设计、详细设计两块。概要设计是设计软件和数据的总体框架,比详细设计的颗粒度更大。详…

Linux进阶——时间服务器

NTP是网络时间协议(network time protocol)的简称(应用层的协议),通过UDP123端口进行网络时钟同步。 Chrony是一个开源自由的网络时间协议NTP的客户端和服务器软件。它能让计算机保持系统时钟与时钟服务器&#xff08…

掌握Spring MVC异常处理的艺术

在Spring MVC中处理异常,就好比你在家里做饭时遇到了问题,比如切菜切到手了(运行时异常),或者发现没盐了(预期异常)。那么,你该怎么应对这些情况呢?Spring MVC处理异常的…

【PyQt】pyqt小案例实现简易文本编辑器

pyqt小案例实现简易文本编辑器 分析 实现了一个简单的文本编辑器,使用PyQt5框架构建。以下是代码的主要功能和特点: 主窗口类 (MyWindow): 继承自 QWidget 类。使用 .ui 文件加载用户界面布局。设置窗口标题、状态栏消息等。创建菜单栏及其子菜单项&…

【C++篇】哈希表

目录 一,哈希概念 1.1,直接定址法 1.2,哈希冲突 1.3,负载因子 二,哈希函数 2.1,除法散列法 /除留余数法 2.2,乘法散列法 2.3,全域散列法 三,处理哈希冲突 3.1&…

玩转ChatGPT:DeepSeek测评(科研思路梳理)

一、写在前面 DeepSeek-R1出圈了,把OpenAI的o3-mini模型都提前逼上线了(还免费使用)。 都号称擅长深度推理,那么对于科研牛马的帮助有多大呢? 我连夜试一试。 二、科研思路梳理 有时候我们牛马们做了一堆结果以后&…