我正在编写一个实用程序Mac OS X应用程序,它基本上充当接受传入HTTP请求的Web服务器(将其视为模拟REST API服务器)。我希望能够支持HTTPS,但理想情况下我想删除用户必须购买自己的SSL证书的要求。
我一直在思考如何实现这一目标。假设我注册了一个名为myapp.com
的域名。然后,我购买了由注册CA签名的myserver.myapp.com
SSL证书。我发布的应用程序包含嵌入其中的SSL证书详细信息。我的所有用户都需要更新他们的/etc/hosts
文件,以便将myserver.myapp.com
指向我的应用安装和运行的任何IP地址。
事实上,到目前为止,最常见的情况是我的应用程序在与客户端相同的计算机上运行,因此我正在考虑更新myserver.myapp.com
的主DNS条目以指向127.0.0.1
,大多数用户不必改变任何东西。
所以,这是基本理论。我错过了什么会使这个计划变得不可行?我想到了一些事情:
非常感谢任何建议/反馈。感谢。
答案 0 :(得分:3)
这不起作用 - 但出于非技术原因。
将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。完成后,他们可以创建证书(再次使用Keychain Access)并将其插入应用程序以启用SSL。
答案 1 :(得分:0)
正如在另一个答案中所说,你不能为每个人发送相同的证书。你能做的就是为每个人创造不同的东西:
应用程序会询问他们想要使用的域名(他们必须拥有的域名,例如myapp.example.com)
应用程序使用ACME协议从let加密中自动获取可信证书
注意:您可以为他们提供您控制的域的子域名(例如[clientid] .yourappname.yourdomain.com)您只能在公共后缀列表中注册yourappname.yourdomain.com(因为我们要加密)有利率限制)