公司的一個項目有Android和iOS的app,Android的下載和安裝都很方便,不過iOS有些麻煩,因為項目本身有些限制,主要有以下一些障礙:
1.iOS的版本不是通過Appstore分發。
2.出於安全的考慮,Android和iOS的app只能通過vpn的方式來訪問服務器,而手機通過vpn后是無法訪問互聯網的。因此無法訪問互聯網的相關HTTPS的服務,換句話說就是無法使用互聯網的SSL證書的web服務。
3、iOS的版本大於7.1的,因此apple的itms-services協議必須實用HTTPS。
鑒於上面這些障礙,於是考慮在局域網搭建內部HTTPS的服務,通過OTA(Over-the-Air)方式來分發iOS的應用。
OTA
OTA即Over-the-Air,簡單來說就是通過無線的方式發送指令給設備,具體針對iOS的設備,比如iphone 、ipad等,讓開發者能夠脫離Appstore,實現從自己的服務器下載並安裝iOS應用。 用戶只需要在iphone 或ipad的瀏覽器中點開一條鏈接,就能直接在主界面中安裝App。整個分發的過程包括三部分:設備(iPhone,ipad),服務器(profile service,用來發送配置文件),驗證服務器(包括CA和目錄服務器)。
OTA分發的實現方式
針對iOS應用分發,需要在服務器里上包括三個文件,來實現OTA方式的分發
1.ipa文件,也就是應用安裝包,可以是開發者證書簽名的,也可以是企業證書。
2.plist文件,主要用來說明iOS應用的安裝信息,主要的安裝信息包括ipa文件的名稱和存放路徑。可以通過Xcode來創建plist文件,具體創建過程和plist文件這里就不贅述了。
3、一個提供itms-services協議鏈接的頁面,同時該頁面是通過HTTPS的方式訪問。itms-services協議鏈接指向plist文件的路徑,例如:
<a href="itms-services://?action=download-manifest&url=https://192.168.0.1/appipa.plist">Install App</a>
有了上面三個文件,apple設備就可以通過提供HTTPS服務器,讀取plist文件的iOS安裝的ipa文件的路徑,從而實現下載和安裝。
自建OpenSSL證書
由於提供HTTPS的服務只能在局域網內部,因此SSL證書不能使用相關CA機構頒發的,且證書不是基於域名,是基於ip地址的,因此只能采用自制證書。在這里我采用的是OpenSSL配置Tomcat 的SSL證書,OpenSSL使用是windows 版本的Apache服務器下的openssl.exe生成。 步驟如下(采用命令行的方式):
1.生成服務器的私鑰
openssl genrsa -out server.key 1024
2.生成簽署申請(Common Name必須為服務器的ip或域名)
openssl req -new -out server.csr -key server.key -config ..\conf\openssl.cnf
3.生成CA私鑰
openssl genrsa -out ca.key 1024
4.用CA的私鑰產生CA的自簽署證書
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -config ..\conf\openssl.cnf
5.創建demoCA(bin目錄下)
demoCA里面創建文件index.txt和serial,serial內容為01,index.txt為空,以及文件夾newcerts
6.生成網站服務器簽署證書
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config ..\conf\openssl.cnf
最后把生成好的server.crt 和server.key路徑配置到Apache服務器的openssl.cnf配置文件里(具體配置見相關文檔),重新啟動Apache服務器即可。
SSLCertificateFile “/Apache22/conf/ssl2rver.crt”
SSLCertificateKeyFile “/Apache22/conf/ssl2rver.key”
客戶端證書ca.crt可以通過下載或者email方式提供給iOS 設備安裝,不過有一點要注意:由於這是自簽名的SSL證書,是不可信任的,因此需要在iphone 或ipad 里手動設置信任證書。
安裝完客戶端證書后,就可以通過iphone 或ipad的瀏覽器來訪問提供itms-services協議鏈接的頁面,下載和安裝iOS的應用了。
-----------------------------------------------------------
歡迎關注我的網站和微信公眾號,文章會在我的網站和微信公眾號上同步發布。
本文首發鏈接:https://www.watch-life.net/website-app/ota-ios-app.html
我的網站:守望軒
微信公眾號名稱:守望軒
微信公眾號:iwatchlife
你也可以掃描或長按以下二維碼