ssl - 旧客户端的 SSL 证书和具有相同公钥/私钥的新证书

标签 ssl ssl-certificate x509 public-key der

情况:我们无法更新客户端设备上的der 文件。并且我们网络服务器上的 SSL 证书即将过期。

是否可以在不替换客户端证书的情况下更新服务器的 SSL 证书?

我们想遵循这个指南:https://www.smashingmagazine.com/how-to-issue-a-new-ssl-certificate-with-an-old-ssl-key/

但是,我们不确定它是否有帮助。

问题是:

der 文件(在客户端)是否仅包含公钥并且使用上面链接中描述的技术更新 SSL 证书是安全的(保持相同的公钥/私钥)。

它是否可以在不替换 der 文件的情况下在客户端设备上运行?或者 der 文件不仅包含 SSL 证书的公钥,还包含一些其他信息?

最佳答案

恐怕,但根据您的原始帖子和说明,客户端会期望从 Web 服务器获得与存储在客户端设备上的 DER 文件中的相同服务器证书。客户端执行精确的二进制副本比较(不仅是公钥)。

任何替换服务器证书的尝试都将导致客户端连接失败。如果您计划更换 Web 服务器上的证书,则还必须更新客户端设备。

不幸的是,有很多有缺陷的 HPKP 实现(老实说,没有看到任何可靠的实现)在更改服务器证书之前工作正常。为了正确处理服务器证书替换,客户端必须能够存储至少两个服务器证书,现有的和新的。下面是高级服务器证书替换过程:

  1. 提前从 CA 获取新的服务器证书。
  2. 通过同时包含新证书来更新应用程序。当客户端更新其设备上的应用程序时,客户端应用程序将信任现有证书和新证书。
  3. 给客户时间在他们的设备上更新应用程序。理想情况下,您应该等到所有客户端都更新了带有更新证书的应用程序版本。
  4. 更改服务器绑定(bind)中的 SSL 证书。
  5. 一段时间后,您可以通过从信任库中删除过期的证书来对客户端证书进行另一次更新。

只有这个步骤顺序可以保证不间断的证书固定更新。

关于ssl - 旧客户端的 SSL 证书和具有相同公钥/私钥的新证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53100500/

相关文章:

amazon-web-services - 如何让 Go 接受用于 TLS 客户端身份验证的自签名证书?

ssl - MobileFirst 6.3 iOS CFNetwork SSLHandshake 失败 (-9824),而服务器支持 TLS1.2

django - 如何使用 Django 测试 https 连接,就像使用 'runserver' 测试非 https 连接一样容易?

ssl - OpenSSL 命令行工具版本和密码

algorithm - 浏览器如何处理 SSL 证书?

security - 让我的网站安全 (https) 会影响我的谷歌排名吗?

json - 带有证书的快速 REST 请求返回错误(代码 -999)

iis - 使用 SSL 证书解决我的 IIS 网站混淆问题

c# - 仅使用服务证书的 WCF 消息安全性

ssl - openssl x509 - SSL 证书的可信和拒绝用途是什么?