gpt4 book ai didi

php - 如何签署以编程方式生成的 iOS 配置文件?

转载 作者:行者123 更新时间:2023-11-28 23:41:05 25 4
gpt4 key购买 nike

上下文

我有一个 web 应用程序(前端 JS/后端 PHP),它生成一些 MDM iOS configuration profiles (*.mobileconfig) 以编程方式。

网站用户输入一些信息,调用我的 PHP api,我的 PHP 后端“即时”生成一个配置文件,其中包含用户特定的数据,将其保存在服务器上,然后返回生成的配置文件的 URL,以便用户可以单击此链接并将其安装在其 iOS 设备上。

简而言之:此配置文件在其有效负载中仅包含一个 webclip(safari 快捷方式)。

一切正常,配置文件链接打开 iOS 设置应用程序,要求用户在其设备上安装此配置文件。

我的问题是这个以编程方式生成的配置文件未签名。因此,用户会被 iOS 警告配置文件未签名,他必须执行一些额外的操作来确认配置文件安装。

我希望对生成的配置文件进行签名,以便用户可以更轻松、更快速地安装它们。

问题

  • 可能吗?
  • 如果是,是否可以使用 PHP?
  • 如果是,我该怎么做?

我阅读了一些关于签署配置文件的资源,但我并不了解所有内容,我没有任何关于签署、证书等的技能。

我不清楚!

感谢任何帮助,提前致谢!

最佳答案

我可以使用 @zvi 确认它是否有效回答。谢谢!

让我提供有关我的实现的更多详细信息以帮助其他人。尤其是我对需要签署哪些文件以及如何获取它们感到困惑。

<强>1。获取证书

我使用了来自 Let's Encrypt 的免费证书, 通过 ZeroSSL轻松获取所需的 2 个文件(证书和私钥)。

您需要证明该域是您的(使用 FTP 或 DNS 方法)

我将证书保存为"certificate.crt",将私钥保存为"private-key.pem" 。将它们上传到您的服务器。

<强>2。获取证书授权链文件

如果您只使用上面的 2 个文件,您的个人资料将被签名但不会在 iOS 中“验证”(我正在寻找的绿色复选标记)

this page 下载“信任链” .

我使用了“Let's Encrypt Authority X3 (IdenTrust cross-signed)”,并将其保存到“ca-chain.pem”。将它与另外两个一起上传到您的服务器。

<强>3。制作PHP登录方法

为了通过 PHP 脚本对其进行签名,我为此制定了一个方法,采用输入配置文件(未签名)并写入输出配置文件(已签名)。

我用了the method descibed here使用 shell_exec

从 PHP 调用 openssl 命令
<?php
function sslSignProfileToFile($inputFile, $outputFile)
{
$sslPath = '/absolute/path/to/your/cert/files';
shell_exec("openssl smime -sign -signer ".$sslPath."/certificate.crt -inkey ".$sslPath."/private-key.pem -certfile ".$sslPath."/ca-chain.pem -nodetach -outform der -in ".$inputFile." -out ".$outputFile);
}
?>

<强>4。生成您的个人资料并签名

根据需要生成它,然后调用上面的方法来制作它的签名副本。

<?php
sslSignProfileToFile( "/path/to/your/unsigned-profile.mobileconfig", "/path/to/your/signed-profile.mobileconfig");
?>

<强>5。享受吧!

然后就看你了:

  • 如果您像我一样在 AJAX 请求中,您可以在正文中返回要下载的签名配置文件的 URL

  • 如果您使用的是经典表单 POST 操作,您可以只执行 header 重定向 like explained here (非本人测试)

关于php - 如何签署以编程方式生成的 iOS 配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53434631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com