2012-03-14 65 views
1

美好的一天!为我的API提供CA链:我应该包含链中的所有证书吗?

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

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

我已经下令我的证书逐一及其创建的类似文本文件适用于命令行卷曲和PHP卷曲库。

但它工作时,我只有一个根证书(AddTrust在我的情况下)。

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

回答

0

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

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

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

+0

首先,我真的认为我需要充分的链条,所以这里有一个问题。当我说“只有一个根证书时才起作用”,这意味着当我提供完整的curl链并需要进行SSL检查时,当我仅提供一个顶级根证书时,它的工作方式相同。 – artvolk 2012-03-14 20:51:33

+0

您是否在开发机器之外的其他机器上测试了这个?如果中间证书安装到本地证书存储中,则根本不需要链。您需要找到没有安装“EssentialSSL”证书的计算机,以验证您的证书链是否正确加载。 – 2012-03-14 21:02:39

+0

Windows上的命令行curl和php中的curl库默认情况下没有*任何证书*(甚至CA证书,如浏览器)。 – artvolk 2012-03-14 21:05:25

相关问题