【问题标题】:Shipping SSL certificate in Mac OS X app在 Mac OS X 应用程序中发送 SSL 证书
【发布时间】:2016-04-10 22:14:05
【问题描述】:

我正在编写一个实用的 Mac OS X 应用程序,它基本上充当接受传入 HTTP 请求的 Web 服务器(将其视为模拟 REST API 服务器)。我希望能够支持 HTTPS,但理想情况下我想取消我的用户必须购买自己的 SSL 证书的要求。

我一直在思考如何实现这一目标。假设我注册了一个名为myapp.com 的域。然后,我为myserver.myapp.com 购买了一个由注册 CA 签名的 SSL 证书。我发布我的应用程序时嵌入了这些 SSL 证书详细信息。我的用户所要做的就是更新他们的/etc/hosts 文件,将myserver.myapp.com 指向我的应用程序安装和运行的任何IP 地址。

事实上,到目前为止,最常见的情况是我的应用程序与客户端在同一台机器上运行,因此我正在考虑将 myserver.myapp.com 的主 DNS 条目更新为指向 127.0.0.1,并且大多数用户不需要改变任何东西。

所以,这就是基本理论。我错过了什么会使这成为一个不可行的计划?我想到了几件事:

  • 我可以使用自签名证书。但是,如果证书没有有效的 CA 链,许多 SSL 客户端会拒绝(或抛出警告)。我很乐意花钱购买真正的证书,以减轻我的用户带来的不便。
  • 我会将 SSL 证书的私钥嵌入到我的应用程序中。理论上,有人可以提取它并用它来模拟我的应用程序。我想我的反应是“那又怎样?”我的应用程序是一个小型生产力应用程序,它不是电子商务网站。它不收集敏感信息。它实际上只是模拟 Web 服务器响应,以便开发人员可以测试他们的应用。

任何建议/反馈将不胜感激。谢谢。

【问题讨论】:

    标签: macos ssl https dns


    【解决方案1】:

    这行不通 - 但出于非技术原因。

    将 SSL 证书及其关联密钥分发给您的用户将违反您的 SSL 证书提供商的颁发条款,当他们发现您的所作所为时将吊销该证书。 (例如,when Pivotal tried to offer SSL service for developers through sslip.io。)这当然会导致您的应用程序停止工作。

    如果您的用户对其计算机具有管理权限,他们可以create and trust their own self-signed CA using Keychain Access。一旦他们这样做了,他们就可以创建一个证书(同样,使用钥匙串访问)并将其插入您的应用程序以启用 SSL。

    【讨论】:

    • 嗯...这很有趣-我不知道。我想知道是否(至少)有一个 SSL 提供商对“妥协”的含义有稍微宽松的解释。当然,制作自签名证书是一种选择。我可以在应用程序中隐藏很多自签名证书的废话,但我的用户仍然必须将签名证书作为受信任的证书导入他们的客户端(考虑 iPhone/Android 移动应用程序指向我的 Mac 的情况应用程序)。我希望我能避免整个舞蹈和随之而来的支持噩梦。不过,感谢您的洞察力。
    • @CraigEdwards 回复。提供者:如果有,您的操作系统不信任他们的证书(或者不会再信任)。 CA/Browser Forum 设置了一些关于 CA 处理密钥泄露的要求;吊销所有者失去控制权的证书是这些要求之一。
    • 无论如何,/etc/hosts hack 不适用于移动设备,因为它们无法访问该文件。但是您可以将受信任的证书插入到这些设备中,例如通过为 iOS 创建配置文件。
    • 感谢 CAB 论坛的链接...根据cabforum.org/wp-content/uploads/CA-Browser-Forum-BR-1.3.3.pdf,密钥泄露被定义为“如果私钥的价值已泄露给未经授权的人,则称其已泄露,未经授权的人可以访问它,或者存在一种实用的技术,未经授权的人可以通过该技术发现其价值。”从学术上讲,我想我是说每个人都“授权”了我的密钥 :-) 但实际上,我确信你是正确的,我需要找到另一个解决方案。再次感谢
    【解决方案2】:

    正如另一个答案中所说,您不能为每个人发送相同的证书。你可以做的是为每个人生成不同的:

    1. 应用程序询问他们想要使用的域名(他们必须拥有的域名,例如 myapp.example.com)

    2. 应用程序使用 ACME 协议从 let's encrypt 自动获取可信证书

    注意:您可以向他们提供您控制的域的子域(例如 [clientid].yourappname.yourdomain.com),只有您可以在公共后缀列表中注册 yourappname.yourdomain.com(因为让我们加密有速率限制)

    【讨论】:

    • 是的,这绝对是一种选择。我需要支持的只是更多的活动部分。但绝对欣赏这个选项..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2018-09-12
    • 2014-05-20
    • 2015-05-16
    相关资源
    最近更新 更多