为我的API提供CA链:我应该包括链中的所有证书吗


Provide CA chain for my API: should I include all certs in chain?

您好!

我正在开发REST-like API,它可以通过HTTPS访问。我的证书由CA颁发,具有中间证书(我的证书有三个级别:AddTrust->Comodo->EssentialSSL->我的证书)。

我想像Facebook一样,为API用户提供带有.NET和PHP SDK的证书链:https://github.com/facebook/php-sdk/blob/master/src/fb_ca_chain_bundle.crt

我通过逐个排序证书创建了类似的文本文件,它适用于命令行curl和PHP curl库。

但当我只有一个根证书(在我的情况下是AddTrust)时,它就可以工作了。

我应该将链中的所有证书与我的SDK捆绑在一起,还是只捆绑一个根证书?

需要绑定您不希望用户拥有的任何证书。如果链中缺少中间证书,则该证书下面的所有证书都将无效。

您的证书由EssentialSSL颁发;如果没有EssentialSSL的中间证书,系统就无法知道您的证书是有效的,或者它最终可以追溯到AddTrust。例如,我已经为AddTrust和Comodo安装了证书,但没有安装EssentialSSL,所以我的系统不会认为您的证书是可信的。

当你说"当我只有一个根证书时它有效"时,你的确切意思是什么?根据定义,您在链中总是只有一个根证书;其余的是由上级颁发的中级证书。你能更具体地说明你到底遇到了什么问题吗?