RESTful服务使用自签名SSL证书

4
我们正在开发一款端到端的解决方案,使客户可以通过移动应用程序访问托管在他们自己服务器上的ERP数据。第一个版本是iOS应用程序。
我们需要确保客户端和服务器之间的流量使用SSL进行加密。问题在于我们希望服务器的安装尽可能无缝,因此我们不希望客户经历购买和安装SSL证书的过程。更不用说每年都要更新证书了。
我们考虑创建一个自签名的CA证书,并使用它为每个客户创建子证书,让客户在安装时将其子证书与公共CA证书一起安装在他们的服务器上。我们将自动化创建子证书的过程,并将其作为设置过程的一部分。证书也将具有非常长的过期时间,以免处理过期的问题。但如果我们使用这个证书,则来自客户端的请求将不被信任,因为CA不受信任。
  1. CA证书能否被添加到iOS应用程序或设备中?
  2. 这种实现方式存在安全问题吗?

谢谢您的建议,我需要确保它能够在所有客户端上运行:iOS、Android、Windows。 - Jonas Stawski
2个回答

2
2017年,现在有了 Let's Encrypt,它提供免费的域名验证和TLS证书签名,这样浏览器/操作系统HTTPS或TLS库和框架就可以接受它们,并且通过 Certbot,相对容易设置自动更新。我不会在这里描述它,因为它是部署特定的,但它们有很好的文档。结合起来,它们可能是最好的解决方案。
捆绑和使用自签名证书出于各种原因都不是最佳选择,现在没有理由再这样做了(除了可能是极度懒惰),所以不要这样做。
免费只适用于基本的域名验证证书,即由letsencrypt.org验证您拥有所述域名的所有权(并使用certbot自动化该过程)。如果您需要额外的验证步骤,则仍需付费。但是,对于应用程序和服务器之间的内部TLS连接,您只需要经过域验证即可,因为您只需要确保正在与您的服务器通信。额外的步骤更侧重于让客户对公司有信心,以便他们可以更加放心地提供敏感数据。一般来说,如果他们正在使用您的应用程序,则表明他们已经信任您的公司,因此额外的验证不重要(并且可能对客户来说是不可见的)。
在开发中,如果您想使用自签名证书,这仍然是有意义的。请查看我的答案以了解如何为iOS设备上的所有应用程序安装自签名证书的此问题

2

我有一个非常类似的情况。到目前为止,我只创建了自签名证书,并编写了客户端程序以忽略允许不受信任的SSL证书。如果有更好的答案,我很乐意听取。


请问您能分享一下如何做到这个吗? - Gopal Singh Sirvi
@gopalsinghsirvi 哪个部分? - Hackmodford
如何生成自签名SSL证书并将其应用于Android和Web API应用程序。 - Gopal Singh Sirvi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接