使用 localhost 的 OTA ipa 分发

OTA ipa distribution using localhost

我已经设置了本地网络服务器 运行 自签名证书 (SSL)。 我还在我的 iOS 15.0 设备上安装了证书,并从设备设置中信任它。但是当我加载 https://my-local-hostname/ 加载带有 link 的下载按钮到 itms-services/.../manifest.plist 并单击下载按钮时,它显示“无法安装 ***” .
另一方面,如果我 运行 ngrok 获得一个带有由受信任的根 CA 签名的证书的静态域,它可以工作,这意味着 manifest.plist 配置是正确的。
有没有办法让它直接在本地主机上工作?有人做过吗?

我在私人商店做了一些发布,它以类似的方式工作。

工作原理:

为企业分发生成 ipa(使用正确的配置文件) 将 ipa 上传到任何你想要的地方,如果你需要一些漂亮的东西,你可以制作一个列出你的 IPA(你自己的私人商店)及其相关信息的应用程序,以及一个 link 来下载它(见下文) 上传 .plist 文件并使 url 字段中的 url 成为您在步骤 1 中上传的 .ipa。 在你想要的地方用这一行创建一个基本的 HTML 页面: 用户现在可以点击并下载 ;)

<a href="itms-services://?action=download-manifest&url=YOUR-UPLOADED-PLIST-FILE.plist">Click here ;-)</a>

我终于明白了..
对于那些对解决方案感兴趣的人,这里是使用 localhost 使 OTA 在本地机器上工作的步骤。

  • 在你的本地机器上设置一个网络服务器(macOS 有一个内置的)
  • 使用自制程序安装 minica(用于生成 SSL 证书)
  • 使网站可通过 https://localhost(或 https://{hostname})访问 (here is a nice article on how to do that)
  • 使用minica生成证书而不是自己制作(只需跳过文章中提到的Generate a private key and certificate for your site步骤,并使用minica --domains {hostname}命令生成必要的证书立即为您生成证书。您可以在 ~/minica.pem~/minica-key.pem 处找到密钥生成的根 CA 证书, 以及您位于 ~/{hostname}/(cert/key).pem 的域的证书, {hostname} 是您本地计算机的 主机名 。如果您不确定机器的主机名是什么,只需打开终端并输入 hostname.
  • /etc/apache2/extra/httpd-ssl.conf中指定SSLCertificateFileSSLCertificateKeyFileSSLCACertificateFile路径到/path/to/key.pem/path/to/cert.pem/path/to/minica.pem对应.
  • minica.pemcert.pem 导入钥匙串并更改为“始终信任”。
  • 重新启动您的网络服务器。
  • minica.pemcert.pem 发送到 iPhone(使用 AirDrop 或其他方式),安装配置文件,并从证书信任设置屏幕信任它们)

基本上就是这样。只需在 HTML 代码和 manifest.plist 文件中的所有位置使用 https://{hostname} 而不是 https://localhost ,这样您就可以从同一网络中的移动设备访问该网站的内容。