是否可以将多个 CA 证书合并到一个 CA 文件中?

Is it possible to combine multiple CA certificates into a single CA file?

我有两个 MQTT 服务器环境:PROD 和 PILOT。这些环境每个都有自己独立的证书颁发机构。我有一个客户端可以使用任一 CA 证书连接到每个环境。可不可以把这两个CA文件合并成一个文件,这样我换环境的时候就不用在客户端修改CA文件了?

示例客户端:

mosquitto_sub -h server.com  --cafile /path/to/ca.file

请注意,CA 文件也包含中间 CA。请参考 我提到这个的地方。

来自 man 页面:

--cafile
Define the path to a file containing PEM encoded CA certificates that are trusted. Used to enable SSL communication.

注意复数形式的证书:-)

您的文件应仅包含信任锚 - 根 CA 证书。链中的其他证书应由服务器发送。您应该考虑重新配置您的服务器,以便按照 TLS 协议发送整个链(阅读 certificate_list here)。

虽然它通常有效,但将中间证书放在信任锚存储中并没有帮助。如果您要更新中间件(这比根更频繁),那么您将需要更换 all 您的客户中的中间件。在您的情况下可能不是问题,但在现实世界中这是一个令人头疼的问题。此外,根据所使用的库和开发人员编写客户端的方式,如果它被用作信任锚,它可能不会检查中间体的撤销。

--cafile 指向的文件应该是 PEM 编码根 CA 证书的串联。