我可以使用@zvi答案确认它是否有效。谢谢!
让我提供有关我的实施的更多详细信息以帮助其他人。特别是我对需要签署哪些文件以及如何获取它们感到困惑。
1. 获得证书
我使用Let's Encrypt的免费证书,通过ZeroSSL轻松获取所需的 2 个文件(证书和私钥)。
您需要证明该域是您的(使用 FTP 或 DNS 方法)
我将证书保存为"certificate.crt"并将私钥保存为"private-key.pem"。将它们上传到您的服务器的某个地方。
2.获取证书授权链文件
如果您只使用上面的 2 个文件,您的个人资料将被签名但在 iOS 中未“验证”(我正在寻找的绿色复选标志)
从此页面下载“信任链” 。
我使用了“Let's Encrypt Authority X3 (IdenTrust cross-signed)”,并将其保存到“ca-chain.pem”。将其与其他两个一起上传到您的服务器。
3.制作PHP登录方法
为了通过 PHP 脚本对其进行签名,我为此创建了一个方法,获取输入配置文件(未签名)并写入输出配置文件(签名)。
我使用这里描述的方法使用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. 享受吧!
然后由你决定: