您好!
我正在开发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,所以我的系统不会认为您的证书是可信的。
当你说"当我只有一个根证书时它有效"时,你的确切意思是什么?根据定义,您在链中总是只有一个根证书;其余的是由上级颁发的中级证书。你能更具体地说明你到底遇到了什么问题吗?