ssl - 我可以将主机的多个替代证书放在一个证书文件中吗?

标签 ssl https certificate libcurl

我有一个通过 HTTPS 保护的网络服务。我还有使用 libcurl(可能链接到 OpenSSL,或链接到 GnuTLS;我不知道是哪一个,这取决于用户如何安装 libcurl)与此 Web 服务通信的客户端软件。因为 Web 服务只能通过客户端软件访问,从不通过浏览器访问,所以 Web 服务使用自签名证书。反过来,客户端软件拥有此自签名证书的副本,并根据该证书明确检查连接。

因为Heartbleed,我想更改私钥和证书。但是,我希望我的用户体验到的服务中断尽可能少。

因此,我无法在固定日期和时间更改 key /证书。如果我这样做,那么所有用户都必须在那个确切的日期和时间升级他们的客户端软件。否则,升级后的客户端软件在服务器变更前无法使用,而旧版本的客户端软件在服务器变更后无法正常使用。

理想情况下,我想告诉我的用户我将在 1 个月内更改证书,并且他们有 1 个月的时间来升级客户端软件。客户端软件应与旧证书和新证书兼容。然后,1 个月后,我可以发布另一个客户端软件更新,删除对旧证书的支持。

现在我们来回答我的问题:我可以将旧证书和新证书附加到一个 .crt 文件中吗?这会导致 libcurl 接受这两个证书吗?如果没有,我应该怎么做?该行为是否取决于 SSL 库或版本?

在 OS X 上的测试似乎表明将两个证书附加到一个文件中是可行的,但我不知道这是否是 OS X 特定的行为,或者它是否适用于所有地方。我的客户端软件必须支持范围广泛的 Unix 系统,包括 Linux(多个发行版)和 FreeBSD。

最佳答案

简答:你不能。

长答案:

是的,无论平台如何,您都可以将多个证书放在一个 .crt 文件中。

但是 HTTPS 只能提供一个证书,而不是一个 crt 文件。所以限制你的不是文件,而是协议(protocol)。

关于ssl - 我可以将主机的多个替代证书放在一个证书文件中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23080868/

相关文章:

java - Wildfly 8.2 : importing wildcard certificate, 中间证书丢失

java - 获取不受支持或无法识别的 SSL 消息;调用外部 API 时嵌套异常是 javax.net.ssl.SSLException

certificate - 更新生产推送 SSL 证书 - Apple APNS

Nginx SSL : error:141CF06C:SSL routines:tls_parse_ctos_key_share:bad key share

node.js - 与指定的 sslrootcert 连接的 Pg-Promise 问题

windows - 尝试运行 openssl s_server 实用程序时出现 OpenSSL 错误

java - 生成最终存档时出错 : Debug certificate expired on

certificate - ASN1。序列 vs 集合

android - 将 SSL 套接字打开到套接字 io 服务器时出现 NullPointerException

ssl - 无法在 Amazon EC2 上使用配置 SSL 证书重新启动 nginx