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

问题描述

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

示例客户端:

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

请注意,CA 文件也包含中间 CA。请参考我提到的 another post

解决方法

man 页面:

--cafile
定义包含受信任的 PEM 编码 CA 证书的文件的路径。用于启用 SSL 通信。

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

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

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

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