我正在使用openssl
管理自己的CA,并与stunnel
一起使用它(及其签名的证书)。由于CA证书过期,我希望能够生成一个新的CA证书和密钥(与旧证书具有相同的dn),并在我推出此新CA时将stunnel
配置为在一段时间内都信任两者
因为旧的和新的CA证书具有相同的名称,它们具有相同的哈希,所以我使用stunnel
的{{1}}选项传递包含-CApath
和{ {1}}。我也尝试过通过<hash>.0
通过CA证书,但这似乎无济于事。
根据openssl docs:
根据主题名称,密钥进行证书匹配 标识符(如果有),以及从 要验证的证书。如果这些数据不匹配,则下一个 证书将被尝试。
虽然CA的使用者名称相同,但是密钥标识符和序列号不同,因此我希望openssl在TLS协商期间能够正确处理此问题。也就是说,先加载旧证书,然后在发现与加载新证书的密钥ID /序列号不匹配的情况下进行加载。因为这确实匹配,所以它将执行验证。我知道openssl会同时加载旧证书和新证书。
我看到的是<hash>.1
(配置有-CAfile
的一端)拒绝了新CA密钥签名的证书,其内容如下:
stunnel
如果新CA的名称与旧CA的名称不同,则说明一切正常,但文档向我建议,不必为新证书使用其他名称。这是openssl真正支持的东西吗?如果是这样,我的证书或client=no
配置可能有什么问题,以阻止其工作?