我正在开发一个cordova应用程序,它需要使用ssl(https)与我的节点(Sails js)服务器通信。
该应用程序具有电子商务性质(需要https)
我可以通过在我的apple / android设备上手动安装cert来使用自签名证书进行测试。这显然不是我希望发布我的应用程序所以我假设我需要购买Android和Apple默认信任的证书。
第一个问题是:我的上述假设是否正确?
我很确定verisign证书应该被两者都信任,但这些证书非常昂贵!我能找到的最便宜的verisign是每年599美元(对于一台服务器)。
第二个问题:默认情况下,是否有Android和Apple信任的其他权限列表?如果是的话,我应该从他们那里购买哪种特定证书?
我的用于创建套接字连接的客户端代码:
socket = io.connect(connectionUrl,
{
secure : true,
port : 443,
reconnection : true,
reconnectionDelay : 1000,
reconnectionDelayMax : 5000,
timeout : 20000
});
答案 0 :(得分:3)
我可以通过手动安装证书来使用自签名证书进行测试 我的苹果/安卓设备。这显然不是我希望发表的方式 我的申请所以我假设我需要购买两者的证书 默认情况下,Android和Apple信任。
第一个问题是:我的上述假设是否正确?
没有
您也可以使用证书在生产环境中运行应用程序。由于您已经知道服务器的证书是什么,因此将其嵌入到您的应用程序中。在这个用例中没有理由去商业CA或使用CA动物园。
注意:在这个特定用例中,有一个受信任的分发渠道(App Store和Google Play)。因此,您可以利用先验服务器知识并嵌入证书而不必担心被篡改。 如果该应用不通过可信渠道分发,那么您需要额外的安全控制。或如果
我很确定verisign证书应该受到两者的信任,但这些证明 非常昂贵!我能找到的最便宜的verisign是每年599美元 (对于一台服务器)。
没有
使用StartCom中的证书。他们提供免费的1级证书(域验证,没有通配符)。它们受到大多数移动和桌面浏览器的信任。如果需要,他们会向您收取撤销费用。
CACert也提供免费证书,但我从未使用过它们。此外,我不知道他们的CA在移动和桌面浏览器中的安装频率。
最后,还有另一个名为Let's Encrypt的免费新人。我对他们一无所知。我甚至不知道他们的CA证书被信任的频率(或不经常)。
此外,那些高额美元扩展验证(EV)证书不值钱。他们添加了 no 其他安全控制,因此从安全角度来看,它们与域验证(DV)证书一样有用(或无用)。他们唯一要做的就是恢复被Race to the Bottom侵蚀的CA利润水平。
第二个问题是:是否有其他权威的清单 默认情况下Android和Apple都信任吗?
小心要求列出事物或喜欢的东西等等。这是Stack Overflow的偏离主题。
socket = io.connect(connectionUrl,
{
secure : true,
port : 443,
reconnection : true,
reconnectionDelay : 1000,
reconnectionDelayMax : 5000,
timeout : 20000
});
你需要在这里多做一点。特别是,您需要提供服务器的证书或证明服务器的CA.我的PhoneGap书没有详细说明如何更改或固定证书。但这就是你需要做的事情。
如果PhoneGap不允许您提供证书(对它们感到羞耻 - 提交错误报告),那么您必须回退到浏览器安全模型和CA动物园。在浏览器安全模型中,任何信任锚或CA都可以声明对您的商务站点进行认证(即使是错误的站点)。在这种情况下,请使用StartCom或CACert。
浏览器安全模型和CA zoo会更频繁地发生故障。例如,在过去的两年中,这里是失败的CA和下属CA(我们知道):Diginotar,Trustwave,TurkTrust,印度国家信息中心(NIC),法国财政部。有关失败的简要历史,请参阅CACert的Risk/History。 (您应该尽一切可能避免使用浏览器安全模型。)