本篇旨在记录在Linux上用Apache搭建ipa分发服务的过程。
由于使用系统和Apache版本的差异,如遇用到的命令行和Apache相关配置路径和文中不一致的情况,请自行查找适用的命令行和配置路径。
安装Apache
首先在终端中输入 httpd -v 看下是否已经安装Apache,如果已经安装,则会展示相应的版本号。
若没安装则 需要执行下边命令安装apache。
sudo yum install httpd
安装之后的目录跟apache的版本相关。 下边以我这个版本为例,安装目录为下
cd /etc/httpd/
SSL自签名证书的生成
如果已有证书颁发机构签发的证书,则可跳过此步骤。
1.安装mod_ssl和openssl软件包
mod_ssl是Apache的SSL/TLS模块,而openssl是一个强大的SSL/TLS加密工具。
sudo yum install mod_ssl openssl
2.生成自签名证书和私钥
新建一个文件夹用来存放证书和私钥
sudo mkdir -p /etc/httpd/tls/certs
使用OpenSSL生成一个自签名证书和私钥。这通常包括生成RSA私钥和创建自签名证书两个步骤。
生成私钥
sudo openssl genrsa -out /etc/httpd/tls/certs/server.key 2048
生成公钥
sudo openssl req -x509 -new -nodes -key /etc/httpd/tls/certs/server.key -sha256 -days 365 -out /etc/httpd/tls/certs/server.crt
这个命令将使用之前生成的私钥来创建一个自签名证书,有效期为365天,-sha256参数指定使用SHA-256哈希算法来签名证书。
创建证书时,OpenSSL会提示你输入一些信息。注意:Common Name,需要填写我们的服务器域名或ip地址。
配置Apache以使用SSL
现在,我们需要配置Apache以使用SSL,并指定之前生成的证书和私钥的路径。
我们需要配置一个虚拟主机来监听HTTPS请求,并指定证书和私钥的路径。打开Apache的配置文件(如/etc/httpd/conf.d/ssl.conf),并找到<VirtualHost *:443>部分。在该部分中,添加或修改以下指令:
<VirtualHost *:443>
ServerName your_domain.com # 确保将ServerName替换为你的域名
SSLEngine on
SSLCertificateFile /etc/httpd/tls/certs/server.crt #上边生成的自签名证书路径
SSLCertificateKeyFile /etc/httpd/tls/certs/server.key #上边生成的私钥路径
# 其他配置指令...
</VirtualHost>
重启Apache服务
完成配置后,重启Apache服务以使更改生效:
sudo systemctl restart httpd
最后,可以通过浏览器访问域名并使用HTTPS协议来测试SSL配置是否成功。由于我们使用的是自签名证书,浏览器可能会显示一个警告,指出证书不受信任。因为自签名证书不是由受信任的证书颁发机构签发的。
支持通过itms-service安装ipa包
配置好Apache自签名证书后,要支持通过itms-service安装ipa包,我们需要按照以下详细步骤进行操作:
1.准备ipa包
确保你有要分发的ipa包是使用企业证书打包的。将ipa包文件放置在Apache服务器上的某个目录中,ipa不要求通过HTTPS访问,能通过HTTP访问即可。
2.准备plist文件
创建一个plist文件,plist文件如下代码快,这个文件包含了ipa包的下载链接、应用名称、版本号等信息。 将创建的plist文件放置在Apache服务器上的某个目录中,确保这个目录可以通过HTTPS访问。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>http://ipa包下载url</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>应用的bundleId</string>
<key>bundle-version</key>
<string>应用的版本号(需和ipa一致)</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>应用的名称</string>
</dict>
</dict>
</array>
</dict>
</plist>
3.创建HTML页面
在HTML页面中,使用itms-services协议引用plist文件的URL(该plist的url必须要使用HTTPS能够访问的到)。如下:
<a href="itms-services://?action=download-manifest&url=https://plist文件url">下载 App</a>
将创建好的html放至Apache服务器上的某个目录,确保能正常访问,测试是否能正常安装ipa包。