1,環境
用戶端開發:MacOs 10.8.5
伺服器開發:Centos6.3 64位
2,軟體準備
Apache httpd 2.2.27
OpenSSL 0.9.8za
3,用戶端準備
Apple的開發人員帳號大致分如下三類:個人,公司,企業,這一篇我們主要說下個人、公司的ipa線上安裝。個人公司層級的AdHoc有這樣一個限制:就是線上發布的ipa包只能安裝
在添加到Apple帳號的Devices列表中(發布IPA之後再添加的裝置需要重新打IPA包)的非越獄裝置及越獄裝置中,而企業級的開發人員帳號則沒有這樣的限制。
首先在Xcode中我們把需要上傳的IPA打包出來,大致流程如下:
這一步需要將後續存放ipa的伺服器路徑提前寫好, 會儲存在對應的plist中。
儲存之後應該會產生對應的ipa和plist檔案,用戶端的準備導致完成。so easy!
4,伺服器準備
a)安裝openssl
解壓步驟2中下載的openssl包並安裝
tar zxvf openssl-0.9.8za.tar.gz
cd openssl-0.9.8za
./config
make
make install
#tar zxvf httpd-2.2.27.tar.gz
cd httpd-2.2.27
./configure --prefix=/usr/local/apache/httpd --enable-ssl=static --with-ssl=/usr/local/ssl
make
make install
這裡將最新OpenSSL安裝到/usr/local/ssl中, 不用理會系統中的OpenSSL版本, 也不用去卸載否則可能會引起其他應用的錯誤。
b)安裝Apache httpd
修改/usr/local/apache/httpd/conf/httpd.conf中
#Include conf/extra/httpd-ssl.conf 去掉前面的#
在/usr/local/apache/httpd 下執行./bin/apachectl start 嘗試啟動apache,因為開啟了ssl所以啟動會失敗提示外面要配置認證。
c)產生認證
在/usr/local/apache/httpd/建立ssl目錄,用於儲存建立的認證檔案。然後cd ssl
(1)用openssl選擇rsa非對稱演算法和des3對稱式加密演算法來製作CA認證:
openssl genrsa -des3 -out my-ca.key 2048
上面會產生一個密鑰長度2048位的密鑰,,儲存在my-ca.key檔案中,這個檔案會要求你輸入個密碼,這個密碼後面用到這個檔案時都會用到。
(2)然後使用x509標準簽署認證
openssl req -new -x509 -days 3650 -key my-ca.key -out my-ca.crt
上面這步產生了有效期間10年的CA認證檔案 my-ca.crt,這個過程會讓你填一些基本資料,比如國家城市,公司名,網站名等等,因為是自簽署,隨便填就行了。
(3)現在有了CA認證了,就可以用它來為我們的網站頒發ssl認證了。同製作CA認證一樣,我們需要先為伺服器產生金鑰組
openssl genrsa -des3 -out mars-server.key 2048
(4)產生了密鑰mars-server.key後,根據它產生csr認證檔案
openssl req -new -key mars-server.key -out mars-server.csr
執行上述命令時同樣要輸入一些基本資料,這裡面要注意了Common Name的值要和你的網域名稱一致,否則後面用戶端瀏覽器驗證網域名稱不正確會不通過的。這裡我是區域網路就填了區域網路的ip,如果10.21.122.22, 因此如果你的區域網路的主機的ip變了的話,就需要重新頒發下認證了。所以建議直接在路由或交換上把你的主機設定為固定ip.
(5)下面就用CA認證來簽署伺服器憑證了
openssl x509 -req -in mars-server.csr -out mars-server.crt -sha1 -CA my-ca.crt -CAkey my-ca.key -CAcreateserial -days 3650
到這裡,我們所需要的認證就完全做成了。下面需要做的就是部署到Apache裡面了。
(6)產生mars-server.key的過程中,可能對這個檔案設定了密碼,如果直接部署,那麼以後啟動apache的時候都要輸入這個密碼,但是一般我們都開機自動啟動apache,手動啟動多麻煩啊,可以把這個檔案轉換一下,省去輸入密碼步驟:
cd /etc/apache2/sslopenssl rsa -in mars-server.key -out mars-server.key.insecure
d)Apache中配置認證
建立一個目錄放認證檔案,如放在/etc/apache2/ssl下,包括3個檔案,分別是:my-ca.crt mars-server.crt mars-server.key.
修改/usr/local/apache/httpd/conf/extra/httpd-ssl.conf如下:
httpsSSLEngine On
SSLCertificateFile /usr/local/apache/httpd/ssl/mars-server.crt
SSLCertificateKeyFile /usr/local/apache/httpd/sslmars-server.key.insecure
SSLCACertificateFile /usr/local/apache/httpd/ssl/my-ca.crt
切換到/usr/local/apache/httpd目錄下啟動伺服器:
./bin/apache/apachectl start
瀏覽器中試試https://localhost/是不是可以訪問了~~
e)配置https下載相關
環境配置好之後就簡單了, 只需要把待下載的資源放到指定目錄, 並修改https的根目錄下的index.html添加兩個下載的連結,簡單index.html如下,各位可以自由發揮:
下載前請安裝此認證 下載ios測試用戶端test
移動上述步驟建立的index.html、ipa、plist及ssl檔案夾中的my-ca.crt到/usr/local/apache/httpd/htdocs目錄下,即可正常線上安裝。
注意:
1,第一次訪問網站進行線上安裝的裝置需要先安裝ssl認證,也就是上述建立的my-ca.crt才可以正常安裝ipa,後續再研究下是否可以省略這一步。
2,為了相容ios7.1上述index.html中items-services://中請使用https