使用自簽發(fā)證書實(shí)現(xiàn)IOS應(yīng)用的內(nèi)網(wǎng)分發(fā)

項(xiàng)目需求是:滿足測試人員在ios設(shè)備上切換應(yīng)用的新舊版本他去。
作為企業(yè)級(jí)應(yīng)用陨收,常見的分發(fā)方式是通過瀏覽器訪問plist文件。但這面臨一個(gè)最關(guān)鍵的問題:蘋果會(huì)驗(yàn)證存放plist的服務(wù)是否有正規(guī)CA頒發(fā)的SSL證書窝爪。

申請StartSSL證書

誠然顾画,第一反應(yīng)是去申請一個(gè)免費(fèi)的CA SSL證書,搜索一陣了解到StartCom是少數(shù)提供免費(fèi)證書的CA機(jī)構(gòu)巷帝。
于是筆者先在百度云購買了個(gè)便宜的域名忌卤,域名解析到內(nèi)網(wǎng)IP,然后用該域名去StartCom申請了個(gè)DV SSL證書楞泼,具體步驟參考Startssl 現(xiàn)在就啟用 HTTPS驰徊,免費(fèi)的笤闯!
申請速度很快,拿到證書后棍厂,筆者配置到內(nèi)網(wǎng)的Nginx代理颗味,具體配置暫時(shí)不表,因?yàn)榕渫臧l(fā)現(xiàn)瀏覽器顯示警告牺弹,并沒有按預(yù)期那樣有綠色小鎖浦马。點(diǎn)開瀏覽器詳細(xì)信息,發(fā)現(xiàn)瀏覽器不信任StartCom的中級(jí)證書(Chrome)张漂,筆者換成Safari捐韩,同樣不信任...
懷著疑惑調(diào)查一番,發(fā)現(xiàn)坑爹了..原來StartCom因?yàn)椴灰?guī)范操作鹃锈,16年9月后被Chrome、Safari瞧预、Mozilla等瀏覽器封殺(僅限未來一年頒發(fā)的免費(fèi)DV證書屎债,個(gè)中瓜葛似乎牽扯到360)。

其他證書機(jī)構(gòu)

  • Lets Encrypt 垢油, 這是網(wǎng)上推薦最多的盆驹,但其頒發(fā)方式不適用我們這種內(nèi)網(wǎng)的服務(wù)器,只好作罷滩愁。
  • 百度云躯喇, 因?yàn)槭孪仍诎俣仍谱粤擞蛎餍钥聪缕涮峁┑拿赓M(fèi)證書硝枉,然后就呵呵了廉丽,先是我注冊的pw后綴域名不被其合作CA機(jī)構(gòu)認(rèn)可,然后百度云只支持SSL證書部署在其云服務(wù)器上妻味,需30天后才允許導(dǎo)出正压。
  • 騰訊云,騰訊云的免費(fèi)DV證書由TrustAsia提供责球,申請成功后可以導(dǎo)出焦履,但注冊域名的時(shí)候也需要注意是否被CA認(rèn)可。

自簽名證書

其實(shí)雏逾,一直是自己陷入了思維困境嘉裤,自以為plist文件必須放在有正規(guī)SSL證書的服務(wù)上,事實(shí)上栖博,如果ios設(shè)備里信任某個(gè)根證書屑宠,Safari自然會(huì)信任其簽發(fā)的其他證書,也就意味著笛匙,完全可以使用自簽發(fā)的證書去配置內(nèi)網(wǎng)服務(wù)侨把。

openssl生成證書

Mac OS自帶該模塊犀变,linux也可以下載openssl相應(yīng)模塊

  1. openssl genrsa -des3 -out server.key 2048, 生成私鑰
  2. openssl req -new -key server.key -out server.csr 證書簽名請求, 需要依次輸入國家秋柄,地區(qū)获枝,城市,組織骇笔,組織單位省店,Common Name和Email。其中Common Name笨触,可以寫自己的名字或者域名懦傍,如果要支持https,Common Name應(yīng)該與域名保持一致芦劣,否則會(huì)引起瀏覽器警告粗俱。
  3. cp server.key server.key.org , openssl rsa -in server.key.org -out server.key, 刪除私鑰中的密碼虚吟,在創(chuàng)建私鑰的過程中寸认,由于必須要指定一個(gè)密碼。而這個(gè)密碼會(huì)帶來一個(gè)副作用串慰,那就是在每次啟動(dòng)Nginx服務(wù)時(shí)偏塞,都會(huì)要求輸入密碼,這顯然非常不方便邦鲫。要?jiǎng)h除私鑰中的密碼
  4. openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Nginx配置證書

具體Nginx環(huán)境搭建就不講了灸叼,記得編譯的時(shí)候加上http-ssl-module;
nginx.conf配置:

upstream nodejs {
    server localhost:3100
}
server { 
    listen 8100 ssl;
    ssl on;
    server_name domainName
    
    ssl_certificate path/to/server.crt
    ssl_certificate_key path/to/server.key

   location / {

    proxy_pass http://localhost:3100;

    proxy_http_version 1.1;

    proxy_set_header Upgrade $http_upgrade;

    proxy_set_header Connection 'upgrade';

    proxy_set_header Host $host;

    proxy_cache_bypass $http_upgrade;

  }

  location /public {

    root /usr/local/var/www;

  }

}

我這里代理的是Nodejs服務(wù)器,ssl默認(rèn)端口是443庆捺,因內(nèi)網(wǎng)封了這個(gè)端口古今,所以隨便改了個(gè)其他不沖突的端口,server_name填你綁定的域名疼燥。

參考iOS適配HTTPS沧卢,創(chuàng)建一個(gè)自簽名的SSL證書(x509)具體步驟

設(shè)備安裝證書

設(shè)備未安裝證書前,Safari打開Nginx服務(wù)地址醉者,會(huì)彈出不信任的警告框但狭,并提供我們?nèi)齻€(gè)操作選擇,這時(shí)候撬即,不能點(diǎn)擊繼續(xù)并接受立磁。這種操作只是讓Safari添加一個(gè) SSL例外 :防止Safari對(duì)此站點(diǎn)做出的警告提示。實(shí)際上并不會(huì)將證書安裝到iOS中剥槐,以成為可信任的證書唱歧。同臺(tái)設(shè)備的其它程序在連接該站點(diǎn)時(shí)仍然會(huì)失敗。


Safari

筆者這里安裝證書采用郵件方式,具體可參考在iOS上使用自簽名的SSL證書

plist部署

Nginx代理的nodejs服務(wù)只負(fù)責(zé)接受每個(gè)應(yīng)用版本對(duì)應(yīng)的plist文件颅崩,具體的ipa還放在原h(huán)ttp服務(wù)器上几于,省去原服務(wù)端接口轉(zhuǎn)Https可能帶來的麻煩

p.s: plist中ipa的獲取路徑里最好不要包含中文字符,會(huì)出現(xiàn)無法安裝情況沿后。

后續(xù)

在使用自簽發(fā)證書不久沿彭,在騰訊云申請的證書下來了,(因?yàn)槲野哑脚_(tái)自動(dòng)生成的TXT解析記錄刪除了尖滚,導(dǎo)致審核一直沒過喉刘,這里夸下騰訊的服務(wù),對(duì)反饋的處理很快)漆弄。將Nginx之前配的自簽發(fā)證書替換為騰訊云提供的Nginx證書后睦裳,設(shè)備不安裝證書也可以直接獲取plist了~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市撼唾,隨后出現(xiàn)的幾起案子廉邑,更是在濱河造成了極大的恐慌,老刑警劉巖倒谷,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鬓催,死亡現(xiàn)場離奇詭異,居然都是意外死亡恨锚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門倍靡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猴伶,“玉大人,你說我怎么就攤上這事塌西∷妫” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵捡需,是天一觀的道長办桨。 經(jīng)常有香客問我,道長站辉,這世上最難降的妖魔是什么呢撞? 我笑而不...
    開封第一講書人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮饰剥,結(jié)果婚禮上殊霞,老公的妹妹穿的比我還像新娘。我一直安慰自己汰蓉,他們只是感情好绷蹲,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般祝钢。 火紅的嫁衣襯著肌膚如雪比规。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,549評(píng)論 1 312
  • 那天拦英,我揣著相機(jī)與錄音蜒什,去河邊找鬼。 笑死龄章,一個(gè)胖子當(dāng)著我的面吹牛吃谣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播做裙,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼岗憋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锚贱?” 一聲冷哼從身側(cè)響起仔戈,我...
    開封第一講書人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拧廊,沒想到半個(gè)月后监徘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吧碾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年凰盔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倦春。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡户敬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出睁本,到底是詐尸還是另有隱情尿庐,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布呢堰,位于F島的核電站抄瑟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏枉疼。R本人自食惡果不足惜皮假,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一撮抓、第九天 我趴在偏房一處隱蔽的房頂上張望犬辰。 院中可真熱鬧,春花似錦烟具、人聲如沸席舍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至汰扭,卻和暖如春稠肘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背萝毛。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來泰國打工项阴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人笆包。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓环揽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親庵佣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子歉胶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容