4

我们正在构建一个端到端的解决方案,允许我们的客户通过移动应用程序访问托管在他们自己的服务器中的 ERP 数据。版本 1 将是一个 iOS 应用程序。

我们需要确保客户端和服务器之间的流量使用 SSL 加密。问题在于我们希望服务器的安装尽可能无缝,因此我们不希望客户经历购买和安装 SSL 证书的过程。甚至没有提到必须每年更新该证书。

我们正在考虑创建一个自签名 CA 证书并使用它为每个客户端创建子证书以安装在他们的服务器上(以及公共 CA 证书)。我们将自动化创建子证书的过程,并将其作为设置过程的一部分。该证书也将有一个非常长的到期日期,不处理到期。但是,如果我们使用此证书,来自客户端的请求将不受信任,因为 CA 将不受信任。

  1. 可以将 CA 添加到 iOS 应用程序或设备吗?
  2. 此实现是否存在安全问题?
4

2 回答 2

2

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

于 2013-11-06T15:02:10.337 回答
2

现在是 2017 年,letsencrypt现在存在,它提供免费的域验证和 TLS 证书签名,以便浏览器/操作系统 HTTPS 或 TLS 库和框架接受它们,并且通过certbot设置自动更新相对容易。我不会在这里描述它,因为它是特定于部署的,但他们有很好的文档。结合它们可能是最好的解决方案。

由于各种原因,捆绑和使用自签名证书严重欠佳,并且没有理由再这样做了(除了可能是严重的懒惰),所以不要这样做。

免费仅适用于基本的域验证证书,即letsencrypt.org 验证您拥有您所说的域(并且certbot 用于自动化该过程)。如果需要,您仍然需要为额外的验证步骤付费。但是,对于您的应用程序和服务器之间的内部 TLS 连接,您只需要验证域,因为您只需要确保您正在与您的服务器通信。额外的步骤更侧重于让客户对公司充满信心,因此他们可以更加安心地提供敏感数据。一般来说,如果他们正在使用你的应用程序,这表明他们已经信任你的公司,所以额外的验证并不重要(而且可能对客户来说是不可见的)。

在开发中,如果您想使用自签名证书,这可能仍然有意义。查看这个问题的回答,了解如何为 iOS 设备上的所有应用安装自签名证书。

于 2017-05-07T17:22:52.080 回答