實(shí)現(xiàn)iOS局域網(wǎng)內(nèi)打包颈畸,一鍵安裝證書和內(nèi)測(cè)App
使用apache開啟https功能乌奇,使用Mac終端命令處理
一、生成證書
1. 進(jìn)入apache web根目錄處理證書命令眯娱;
cd /Library/WebServer/Documents
可以在Documents目錄下創(chuàng)建一個(gè)文件夾礁苗,用于存放證書、ipa包徙缴、plist文件和html文件试伙;用命令:sudo mkdir iOS 創(chuàng)建一個(gè)名為iOS的文件夾,終端輸入:cd iOS進(jìn)入該文件夾,接下來(lái)是生成秘鑰疏叨、生成簽署申請(qǐng)吱抚、生成服務(wù)器私鑰和生成給網(wǎng)站服務(wù)器簽署的證書。
接下來(lái)的操作都是在iOS文件夾下考廉,使用終端命令完成:
(1)生成秘鑰:輸入sudo openssl genrsa -des3 -out app.key 1024
Generating RSA private key, 1024 bit long modulus
.....++++++
.........++++++
e is 65537 (0x10001)
Enter pass phrase for app.key:[這里是輸入密碼]
Verifying - Enter pass phrase for app.key:[這里再次輸入密碼確認(rèn)]
(2)生成簽署申請(qǐng):輸入 sudo openssl req -new -key app.key -out app.csr
Enter pass phrase for app.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN[這里是國(guó)家秘豹,CN中國(guó)]
State or Province Name (full name) [Some-State]:Zhejiang[這里是省份,城市昌粤,隨意輸入]
Locality Name (eg, city) []:hangzhou[這里是城市既绕,隨意輸入]
Organization Name (eg, company) [Internet Widgits Pty Ltd]:zsyx[這里是公司,隨意輸入]
Organizational Unit Name (eg, section) []:zsyx[這里是組織名稱涮坐,隨意輸入]
Common Name (e.g. server FQDN or YOUR name) []:192.168.2.1[這個(gè)必須填正確凄贩,是你的服務(wù)器的域名,或者ip]
Email Address []:123456@163.com[這里是我的郵箱]
please enter the following 'extra'attributes
to be sent with your certificate request
A challenge password []:123456[這里是密碼]
An optional company name []:zsw[這里是名字]
(3)生成服務(wù)器的私鑰:輸入sudo openssl rsa -in app.key -out server.key
Enter pass phrase for app.key:[這里輸入密碼]
writing RSA key
(4)生成給網(wǎng)站服務(wù)器簽署的證書:輸入sudo openssl req -new -x509 -days 3650 -key server.key -out server.crt
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:hangzhou
Locality Name (eg, city) []:hangzhou
Organization Name (eg, company) [Internet Widgits Pty Ltd]:hz ltd
Organizational Unit Name (eg, section) []:rh
Common Name (e.g. server FQDN or YOUR name) []:192.168.2.1[這個(gè)必須填正確袱讹,是你的服務(wù)器的域名疲扎,或者ip,必須和上面輸入的一致]
Email Address []:zhu410289616@163.com
(5)輸入sudo cp server.* /etc/apache2/
(6)測(cè)試配置是否成功:輸入sudo apachectl configtest
Syntax OK
(7)重啟apache:輸入 sudo apachectl restart
2.apache開啟ssl功能
(1)終端輸入:cd /etc/apache2/? 進(jìn)入該目錄下編輯httpd.conf文件(/etc/apache2/httpd.conf和/private/etc/apache2/httpd.conf其實(shí)是同一個(gè)內(nèi)容)
? ? 終端輸入:sudo vi httpd.conf? 刪除以下四行內(nèi)容前面的“#”
? LoadModule ssl_module libexec/apache2/mod_ssl.so
? Include /etc/apache2/extra/httpd-ssl.conf
? Include /etc/apache2/extra/httpd-vhosts.conf
? LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
并且查看ServerName是不是指向 127.0.0.1:80 或者www.example.com:80
(2)終端輸入:cd /etc/apache2/extra/ 進(jìn)入該目錄下編輯httpd-ssl.conf文件
? ? 終端輸入:sudo vi httpd-ssl.conf 刪除以下兩行內(nèi)容前面的“#”
? ? SSLCertificateFile "/etc/apache2/ssl/server.crt"?
? ? SSLCertificateKeyFile "/etc/apache2/ssl/server.key"
說明:SSLCertificateFile "/etc/apache2/ssl/server.crt"和 SSLCertificateKeyFile "/etc/apache2/ssl/server.key"在你的Mac上可能會(huì)顯示:SSLCertificateFile "/private/etc/apache2/server.crt"和SSLCertificateKeyFile "/private/etc/apache2/server.key"捷雕,反正我的電腦上是這樣顯示的椒丧,不用多做修改,只需刪除前面的“#”即可
(3)同樣在extra文件夾下救巷,編輯httpd-vhosts.conf文件
? ? 終端輸入:sudo vi httpd-vhosts.conf?
該文件內(nèi)容里會(huì)包含兩個(gè)<VirtualHost *:80> ... </VirtualHost>壶熏,需要在第二個(gè)后面再加一個(gè) :
<VirtualHost *:80>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/apache2/server.crt
SSLCertificateKeyFile /etc/apache2/server.key
ServerName 192.168.2.1[這個(gè)必須填正確,是你的服務(wù)器的域名浦译,或者ip棒假,必須和上面輸入的一致]
DocumentRoot "/Library/WebServer/Documents"
</VirtualHost>
這樣就已經(jīng)配置完成了,運(yùn)行sudo apachectl configtest命令精盅,檢查配置帽哑。
Syntax OK 代表成功
可以重啟服務(wù)器? sudo apachectl restart
到這里服務(wù)器就已經(jīng)支持ssl了,可以打開瀏覽器訪問https://192.168.2.1/iOS叹俏,頁(yè)面會(huì)顯示:It Works 表示已經(jīng)配置成功妻枕。
說明:https://192.168.2.1/iOS表示訪問的是你服務(wù)器的iOS文件夾,可以使用快捷鍵 cmd+shift+G 前往文件夾她肯,輸入:/Library/WebServer/Documents佳头,可以看到你創(chuàng)建的iOS文件夾,該文件夾下可以看到剛剛配置的證書晴氨。
二康嘉、創(chuàng)建plist文件、html文件
1.創(chuàng)建plist文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>https://192.168.2.1/iOS/app.ipa </string>? (說明:你的服務(wù)器地址下的ipa文件)
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>https://192.168.2.1/iOS/app.png</string> (說明:可以隨意放一張圖片)
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.ipeaksoft.pitDadGame</string> (說明:項(xiàng)目的bundle id)
<key>bundle-version</key>
<string>2.1.0</string>(說明:項(xiàng)目版本號(hào))
<key>kind</key>
<string>software</string>
<key>title</key>
<string>內(nèi)測(cè)ipa</string>(說明:這個(gè)隨意輸入)
</dict>
</dict>
</array>
</dict>
</plist>
2.創(chuàng)建html文件(index.html)
<!DOCTYPE HTML>
<html lang-"en">
<meta charset="UTF-8">
<head>
<title>app內(nèi)測(cè)</title>
</head>
<body>
<h1 align="center">安裝app內(nèi)測(cè)版本</h1>
<br/>
<br/>
<p align="center">說明:必須先安裝證書籽前,再點(diǎn)擊安裝app</p>
<br/>
<br/>
<div style=font-size:25px align="center">
? <font color="blue">
? <a >1.安裝證書</a>
? </font>
</div>
<br/>
<br/>
<div style=font-size:25px align="center">
? <font color="blue">
<a href="itms-services://?action=download-manifest&url=https://192.168.2.1/iOS/app.plist">2.安裝app</a>
? </font>
</div>
</body>
</html>
3.打包ipa亭珍,收集需要測(cè)試的設(shè)備UDID創(chuàng)建adhoc證書敷钾,打包ipa文件
最后將創(chuàng)建好的plist、html和ipa包導(dǎo)入你的服務(wù)器中的iOS文件夾下肄梨;
cmd+shift+G前往文件夾阻荒,輸入:/Library/WebServer/Documents,將文件導(dǎo)入iOS文件夾里即可众羡。
safari瀏覽器訪問:https://192.168.2.1/iOS/index.html 即可實(shí)現(xiàn)一件安裝app內(nèi)測(cè)包侨赡。
中途遇到的坑:安裝了證書后,再點(diǎn)擊安裝ipa時(shí)粱侣,如果提示“無(wú)法連接到192.168.2.1”這個(gè)ip地址羊壹,這個(gè)坑真的讓我很無(wú)奈,搞了一下午齐婴,adhoc文件配了又配油猫,以為是UDID沒有加上去,欲哭無(wú)淚柠偶,最后無(wú)意中點(diǎn)擊“設(shè)置->通用->關(guān)于本機(jī)->證書信任設(shè)置”情妖,看到192.168.2.1這一項(xiàng)沒有打開,(MMP)诱担。好了毡证,這個(gè)真的有點(diǎn)腦殘了,希望你們不要遇到這樣的坑8秒取G橹瘛!
結(jié)語(yǔ):第一次寫文章匀哄,也是借鑒大神寫的這篇內(nèi)容,有不足之處還望指出雏蛮,正在努力學(xué)習(xí)中涎嚼,覺得有用的同學(xué)可以點(diǎn)個(gè)贊哦,一起學(xué)習(xí)挑秉,一起成長(zhǎng)法梯!