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

时间:2012-03-14 16:41:41

标签: php asp.net-mvc rest ssl https

美好的一天!

我正在开发类似REST的API,可通过HTTPS访问。我的证书由CA颁发,并有中间证书(我的证书有3个级别:AddTrust - > Comodo - > EssentialSSL - >我的证书)。

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

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

但是当我只有一个根证书(在我的情况下是AddTrust)时它才有用。

我是否应该将所有证书捆绑在我的SDK或只有一个根证书?

1 个答案:

答案 0 :(得分:0)

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

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

当你说“当我只有一个根证书时它可以正常工作”时,你究竟是什么意思?根据定义,您总是在链中只有一个根证书;其余的是由更高级别的人发布的中间证书。你能更具体地了解一下你实际遇到的问题吗?