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

來源:互聯網
上載者:User

最近蘋果發布了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拉。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.