你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS 7.1下 內網 ADHOC 下載解決方案

IOS 7.1下 內網 ADHOC 下載解決方案

編輯:IOS開發綜合
最近蘋果發布了IOS7.1。話說蘋果每次發布都牽動開發者的心哈,這次讓我們又小糾結了一陣。

廢話不多說,說下AdHoc在ios7.1不能下載的原因,就是ios7.1不接受未經ssl驗證的manifest了,就意味著plist文件的路徑需要從http換為https:

itms-services://?action=download-manifest&url=http://domain.com/app.plist
==> //更換為
itms-services://?action=download-manifest&url=https://domain.com/app.plist

看起來貌似簡單一點改動啊,但是如果你和我一樣在局域網裡面搭了個apache,寫了一些php代碼,可以自動上傳包上去給測試人員下載測試的話,那就要麻煩一些了,網上有些說用dropbox. 這個方案的確可行,但是我們是內網環境啊,dropbox訪問不了啊,那只能想辦法讓容器支持https.

可能有人說我試了自簽名證書支持https啊,但還是不行啊。這裡也是可以解決的,請直接看文章末尾。
Apache2支持https

我用的時CentOS6系統和Apache2服務器,如果你用的不同的環境,也可以參考下,起碼也可以知道解決的思路。
1、首先你得apache要支持mod_ssl,如果沒有就安裝下,安裝也簡單了

yum install mod_ssl

如果是其他的系統就按對應的安裝方案
2、生成自簽名的CA證書和服務器證書

2.1用openssl選擇rsa非對稱算法和des3對稱加密算法來制作CA證書:

openssl genrsa -des3 -out my-ca.key 2048

上面會生成一個密鑰長度2048位的密鑰,,保存在my-ca.key文件中,這個文件會要求你輸入個密碼,這個密碼後面用到這個文件時都會用到。

2.2然後使用x509標准簽署證書

openssl req -new -x509 -days 3650 -key my-ca.key -out my-ca.crt

上面這步生成了有效期10年的CA證書文件 my-ca.crt,這個過程會讓你填一些基本信息,比如國家城市,公司名,網站名等等,因為是自簽署,隨便填就行了。

2.3然後我們可以用下面這個命令查看下這個證書(不看也行):

openssl x509 -in my-ca.crt -text -noout

2.4現在有了CA證書了,就可以用它來為我們的網站頒發ssl證書了。同制作CA證書一樣,我們需要先為服務器生成密鑰對。

openssl genrsa -des3 -out mars-server.key 2048

2.5生成了密鑰mars-server.key後,根據它生成csr證書文件

openssl req -new -key mars-server.key -out mars-server.csr

執行上述命令時同樣要輸入一些基本信息,這裡面要注意了Common Name的值要和你的域名一致,否則後面客戶端浏覽器驗證域名不正確會不通過的。這裡我是局域網就填了局域網的ip,如果10.21.122.22, 因此如果你的局域網的主機的ip變了的話,就需要重新頒發下證書了。所以建議直接在路由或交換上把你的主機設置為固定ip.

2.6下面就用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裡面了。
3、部署到Apache

3.1創建一個目錄放證書文件,如放在/etc/apache2/ssl下,包括3個文件,分別是:my-ca.crtmars-server.crt mars-server.key.

3.2在生成mars-server.key的過程中,可能對這個文件設置了密碼,如果直接部署,那麼以後啟動apache的時候都要輸入這個密碼,但是一般我們都開機自動啟動apache,手動啟動多麻煩啊,可以把這個文件轉換一下,省去輸入密碼步驟:

cd /etc/apache2/ssl
openssl rsa -in mars-server.key -out mars-server.key.insecure

3.3修改Apache的ssl配置,比如我是centOS放在 /etc/httpd/conf.d/ssl.conf中,分別把以下四個選項的配置修改為剛生成的文件。

SSLEngine On
SSLCertificateFile /etc/apache2/ssl/mars-server.crt
SSLCertificateKeyFile /etc/apache2/ssl/mars-server.key.insecure
SSLCACertificateFile /etc/apache2/ssl/my-ca.crt

3.4重啟apache服務器

apachectl stop
apachectl start

到這裡,自簽名的https服務就可以了,在浏覽器裡面打https://localhost/就可以看到浏覽器報紅啦,添加證書信任後就可以繼續訪問了
讓用戶自己安裝crt證書

到這裡沒有完呢,因為這裡CA證書使我們自己創建的,在手機裡面沒有我們的根證書啊,用手機safari還是不能訪問啊,如何解決呢。方案很簡單,就是讓用戶自己下載安裝證書先。

在服務器上把CA證書my-ca.crt文件拷貝的容器中某個可以訪問的路徑下,比如放在網站根目錄下,在你的首頁添加個下載證書的鏈接就行啦,然用戶自己下載證書安裝到手機,安裝完成就可以正常下載啦。在首頁添加html標簽

1



下載前請先安裝證書

到這裡就OK拉。
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved