如果要實(shí)現(xiàn)iOS的 OAT分發(fā)喇潘,現(xiàn)在必須通過https才能實(shí)現(xiàn)兔乞,于是自己閑來無事自己研究了一下半夷。
首先第一步需要一個(gè)https的服務(wù)机杜,Mac自帶的apache可以很簡(jiǎn)單的是實(shí)現(xiàn)http的服務(wù)客情。對(duì)于https需要做的就是開啟ssl功能就行了其弊。
一、生成ssl證書
1膀斋、創(chuàng)建文件夾
為了文件的整潔梭伐,先創(chuàng)建一個(gè)文件夾來存放ssl相關(guān)的文件,手動(dòng)創(chuàng)建或者命令行創(chuàng)建都可以仰担。
路徑也隨便糊识,只要找到就可以,不過一般會(huì)放在/private/etc/apache2/下摔蓝,也建議放在這個(gè)文件目錄下技掏,便于管理。
sudo mkdir /private/etc/apache2/ssl
cd /private/etc/apache2/ssl
2项鬼、生成密鑰對(duì)
通過openssl生成密鑰對(duì)
sudo ssh-keygen -f server.key
3哑梳、生成證書請(qǐng)求文件
在設(shè)置信息的時(shí)候要注意 Common Name 一定要對(duì)應(yīng)服務(wù)器地址
sudo openssl req -new -key server.key -out request.csr
3、生成ssl證書(有效期為一年)
sudo openssl x509 -req -days 365 -in request.csr -signkey server.key -out server.crt
目前為止生成的ssl證書已經(jīng)生成完畢绘盟,剩下的就是給apache配置ssl鸠真。
二悯仙、配置apache
配置ssl之前,先確保apache能夠正常的訪問使用
配置apache的文件是在一個(gè)隱藏的文件夾下吠卷,可以通過finder前往或者通過命令行直接打開
open /private/etc/apache2/
1锡垄、httpd.conf
打開 /private/etc/apache2/httpd.conf
文件,查找以下配置祭隔,去掉前面的 "#"货岭,
LoadModule ssl_module libexec/apache2/mod_ssl.so
Include /private/etc/apache2/extra/httpd-ssl.conf
Include/private/etc/apache2/extra/httpd-vhosts.conf
2、httpd-ssl.conf
打開 /private/etc/apache2/extra/httpd-ssl.conf
文件
配置ssl證書和密鑰的路徑
SSLCertificateFile "/private/etc/apache2/ssl/server.crt"
SSLCertificateKeyFile "/private/etc/apache2/ssl/server.key"
3疾渴、httpd-vhosts.conf
打開 /private/etc/apache2/extra/httpd-vhosts.conf
文件
在文件的最后面添加以下信息
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /private/etc/apache2/ssl/server.crt
SSLCertificateKeyFile /private/etc/apache2/ssl/server.key
ServerName localhost
DocumentRoot "這里填寫文件的存儲(chǔ)路徑"
</VirtualHost>
**ServerName 服務(wù)地址 **
**DocumentRoot一般apache的文件都在/Library/WebServer/Documents/**
5千贯、驗(yàn)證配置
sudo apachectl configtest
如果有以下錯(cuò)誤
AH00526: Syntax error on line 92 of /private/etc/apache2/extra/httpd-ssl.conf:
SSLSessionCache: 'shmcb' session cache not supported (known names: ).
Maybe you need to load the appropriate socache module (mod_socache_shmcb?).
可根據(jù)提示進(jìn)行修改,找到 /private/etc/apache2/extra/httpd-ssl.conf
的92行搞坝。
去掉對(duì)應(yīng)行的注釋
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
6搔谴、啟動(dòng)或重啟apache
sudo apachectl restart
現(xiàn)在就可以通過https訪問apache服務(wù)了,不過由于是自簽名的會(huì)有安全警告桩撮,手動(dòng)設(shè)置信任就行了敦第。
三、OTA部署
在打包的過程中店量,到下面這步的時(shí)候芜果,如果勾選下圖的選擇框會(huì)引導(dǎo)生成OTA所需要的plist文件
點(diǎn)擊next之后會(huì)出現(xiàn)如下界面,進(jìn)行相關(guān)信息的填寫融师,下面的四項(xiàng)都是必填項(xiàng)
對(duì)于圖片有的可能會(huì)不需要师幕,并且在plist 文件中沒有圖片也不影響功能的實(shí)現(xiàn),所以隨便就可以诬滩,這些信息后期都可以通過修改plist文件來改變霹粥。
利用Xcode自動(dòng)生成的好處就是省去了自己構(gòu)建plist結(jié)構(gòu)的過程,如果你已經(jīng)有現(xiàn)成的plist文件就不用勾選第一幅圖的選擇框疼鸟,只用修改相應(yīng)的內(nèi)容就可以了后控。
- bundle-identifier: 對(duì)應(yīng)ipa 的 bundle identifier
- bundle-version: 對(duì)應(yīng)ipa 的 version
- kind :software
- title :安裝包的名字
現(xiàn)在我們已經(jīng)有了https的服務(wù)器、ipa安裝包和plist文件空镜,OTA所需要的東西已經(jīng)齊全浩淘,剩下的就是將ipa和plist文件方法到服務(wù)端,提供下載安裝吴攒。
apache服務(wù)的默認(rèn)文件位置在/Library/WebServer/Documents/
张抄,可以創(chuàng)建一個(gè)文件來放置OTA所需的文件
index.html的內(nèi)容,兩個(gè)連接洼怔,一個(gè)下載安裝包署惯,一個(gè)現(xiàn)在ssl的證書
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" mime-types="text/plain">
<title></title>
</head>
<body>
<a classstyle="display:block" href="itms-services://?action=download-manifest&url=https://192.168.0.129/OTA/manifest.plist">下載ipa</a>
<a style="display:block" >下載證書</a>
</body>
</html>
點(diǎn)擊"下載ipa",不出意外的話就會(huì)出現(xiàn)下面的界面镣隶,點(diǎn)擊安裝就ok了极谊。
<h2>總結(jié)一下遇到的坑</h2>
最大的坑就是在生成證書請(qǐng)求文件時(shí)诡右,沒注意到 Common Name 的設(shè)置,以至于后面點(diǎn)擊下載的時(shí)候一直提示連接失敗轻猖,找了好久才找到這個(gè)問題帆吻。