亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

小白一步一步使用HTTPS

2019-11-06 10:05:25
字體:
來源:轉載
供稿:網友

由于2017年初開始禁止未使用https的應用上架appstore,領導們開始考慮在我們的應用中使用https,這讓我很頭疼,以前聽到過https,用httpwatch抓知乎、微信的包的時候都看到這些應用使用的都是https,對https感覺很熟悉,其實是一知半解的,這下要在應用中使用,看來必須要好好研究下了。

  下面是研究https在簡書上搜索到的幾篇優秀文章:

   http://www.jianshu.com/p/ce1557c1868d;

   http://www.jianshu.com/p/d79b37216558;

   http://www.jianshu.com/p/4494774963a9;

   http://www.jianshu.com/p/7cdd2324f639;

   要使用HTTPS肯定要知道一些概念,從上面幾篇優秀文章里找出來幾個必須要了解的概念:

   1.HTTP:一種明文傳輸協議,交互過程以及數據傳輸都沒有進行加密,通信雙方沒有進行身份驗證,通信過程容易遭到劫持、篡改的安全問題。

   2.SSL:安全套接層。

   3.HTTPS:只是一種在HTTP協議的基礎上加了一層SSL的封裝,之后具有了以下三個特征:

                                                                                                                                                                  數據完整性:數據傳輸經過完整性校驗

                                                                                                                                                                  數據隱私性:數據經過加密

                                                                                                                                                                  身份認證:第三方不能偽造客戶端或者服務端的身份

   4.對稱加密:采用單密碼加密,同一個密鑰可以用來加密,也可以用來解密,簡單理解就是加解密都是用的同一個秘鑰。特點:體量小,算法公開,加密效率特別高。

   5.非對稱加密:有2個秘鑰,一個是公開的秘鑰,一個是私有密鑰,這兩個是一對,互相配合加密和解密,公鑰加密用私鑰解密,私鑰加密公鑰解密。特點:速度慢,但是加          密很可靠

   6.CA 證書:其實就是XXX機構頒發的一個包含公鑰和密鑰的證書。

    

    下面用一張我畫的圖來理解下HTTPS的工作原理:

                                              

         

             第一步:client向service發送一條請求,告訴service,client支持哪種算法(比如:對稱加密算法有DES,RC5,密鑰交換算法有RSA和DH,摘要算法有md5和SHA等)

             第二步:service接收到client的消息后,分析之后,選擇一種client支持的算法,把證書發送給client的,這個證書里面包含了一些證書的基本信息(例如:失效時間,名稱,域名信息,公鑰等)

             第三步:client接收到信息后,利用本地存在的數字證書對service的證書進行驗證,如果驗證失敗,會彈出一個提示框來顯示錯誤信息,驗證通過,生成一個隨機數,然后證書中的公鑰進行加密,發送給service

            第四步:service接收到加密的隨機數之后,用公鑰進行解密,取出隨機數,然后把這個隨機數當做密鑰對要加密的內容進行對稱加密,發送給client

            第五步:client接收到service發送的密文,用之前保存的隨機數作為密鑰進行解密,還原密文

            第六步:之后client和service進行數據交互,利用那個隨機數作為密鑰進行加解密

         到這里對很多https的概念還是很迷茫,比如數字認證識什么東東,在第二步的時候client是怎么驗證service的證書?,service怎么對client的身份做校驗,然后就反反復復又查資料,上面的問題都可以在下面的博客中找到

            http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html

  現在應該能到得到一個結論,證書可以由國際上公認的證書機構頒發,一般客戶端的證書驗證的應用程序對這些機構頒發的證書完全信任,不過一般情況下,我們會讓客戶端程序安裝我們服務端的根證書,保證客戶端可以信任我們的證書。

  好了,廢話不多說,看代碼        

/** * 初始化有證書的SSLContext * <p> * client.cer 是后臺申請提供的,不包含密鑰信息 * * @param context * @return * @throws NoSuchAlgorithmException * @throws IOException * @throws CertificateException * @throws KeyStoreException * @throws UnrecoverableKeyException * @throws KeyManagementException */public static SSLContext getSSLContextWithCer(Context context) throws NoSuchAlgorithmException, IOException, CertificateException, KeyStoreException, UnrecoverableKeyException, KeyManagementException {    //實例化SSLContext    SSLContext sslContext = SSLContext.getInstance("SSL");    // 從assets中加載證書,在HTTPS通訊中最常用的是cer/crt和pem    InputStream inputStream = context.getAssets().open("client.cer");    // 證書工廠    CertificateFactory cerFactory = CertificateFactory.getInstance("X.509");    Certificate cer = cerFactory.generateCertificate(inputStream);    // 密鑰庫    KeyStore keyStory = KeyStore.getInstance("PKCS12");    //沒有密鑰    keyStory.load(null, null);    // 加載證書到密鑰庫中    keyStory.setCertificateEntry("ass", cer);    // 密鑰管理器    KeyManagerFactory kMFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());    kMFactory.init(keyStory, null);    // 信任管理器    TrustManagerFactory tmFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());    tmFactory.init(keyStory);    //初始化sslContext    sslContext.init(kMFactory.getKeyManagers(), tmFactory.getTrustManagers(), new SecureRandom());    inputStream.close();    return sslContext;}

           

/** * 獲取SSLContext * * @return * @throws NoSuchAlgorithmException * @throws KeyManagementException */public static SSLContext getSSLContextWithoutCer() throws NoSuchAlgorithmException, KeyManagementException {    // 實例化SSLContext    SSLContext sslContext = SSLContext.getInstance("SSL");    sslContext.init(null, new TrustManager[]{trustManagers}, new SecureRandom());    return sslContext;}/** * 自定義信任管理器 */PRivate static TrustManager trustManagers = new X509TrustManager() {    @Override    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {    }    @Override    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {    }    @Override    public X509Certificate[] getAcceptedIssuers() {        return new X509Certificate[0];    }};//驗證主機名public static HostnameVerifier hostnameVerifier = new HostnameVerifier() {    @Override    public boolean verify(String hostname, SSLsession session) {        // TODO Auto-generated method stub        return true;    }};

 

       


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品午夜视频| 欧美在线视频一区二区| 在线观看不卡av| 国产精品成人aaaaa网站| 亚洲免费精彩视频| 日韩成人小视频| 一本一本久久a久久精品综合小说| 久久精品视频在线播放| 欧美在线性视频| 国产精品揄拍一区二区| 91a在线视频| 国产精品xxx视频| 亚洲激情视频在线观看| 国产精品第10页| 欧美成人免费一级人片100| 欧美又大又粗又长| 国产精品福利在线| 国产免费一区二区三区在线能观看| 亚洲欧美综合区自拍另类| 亚洲va男人天堂| 日韩成人免费视频| 欧美成人三级视频网站| 91在线观看免费| 亚洲图片在区色| 亚洲嫩模很污视频| 亚洲女人初尝黑人巨大| 国产精品香蕉在线观看| 91精品视频免费观看| 2019国产精品自在线拍国产不卡| 68精品国产免费久久久久久婷婷| 成人精品一区二区三区电影黑人| 欧美激情精品在线| 亚洲男人天堂九九视频| 91精品国产91久久久久久久久| 成人欧美一区二区三区黑人孕妇| 26uuu另类亚洲欧美日本一| 日韩中文字幕在线播放| 性欧美xxxx交| 亚洲嫩模很污视频| 精品国产乱码久久久久久天美| 久久人人爽人人爽人人片av高清| 国产伦精品一区二区三区精品视频| 亚洲小视频在线观看| 成人黄色片网站| 精品久久久久久中文字幕一区奶水| 久久精品青青大伊人av| 奇米四色中文综合久久| 91免费精品国偷自产在线| 久久69精品久久久久久国产越南| 日韩av免费一区| 亚洲国产精品美女| 欧美电影在线免费观看网站| 日韩亚洲欧美中文高清在线| 亚洲男人第一网站| 美女视频久久黄| 91免费国产网站| 91亚洲国产成人精品性色| 91网站免费观看| 精品国产欧美一区二区五十路| 日韩国产在线看| 久久精品视频一| 国产精品视频男人的天堂| 精品国产乱码久久久久酒店| 在线精品播放av| 久久久日本电影| 黄网站色欧美视频| 日韩av在线导航| 国产精品ⅴa在线观看h| 久久亚洲精品网站| 国产精品亚洲一区二区三区| 91在线精品播放| 国产自摸综合网| 亚洲在线免费观看| 国内精品视频一区| 国产精品福利无圣光在线一区| 亚洲欧美一区二区三区四区| 亚洲变态欧美另类捆绑| 欧美电影在线观看完整版| 26uuu久久噜噜噜噜| 国产精品综合不卡av| 欧美网站在线观看| 疯狂做受xxxx高潮欧美日本| 日韩高清有码在线| 色综合色综合网色综合| 国产精品视频永久免费播放| 亚洲国产精品成人va在线观看| 日韩美女av在线免费观看| 日韩欧美中文免费| 日韩中文av在线| 精品一区二区三区电影| 日韩高清免费在线| 91精品91久久久久久| 亚洲3p在线观看| 在线视频日韩精品| 亚洲欧美日韩天堂| 国产精品自拍网| 成人在线免费观看视视频| 欧美国产日韩一区二区三区| 日本高清视频精品| 中文字幕日韩综合av| 亚洲精品中文字幕女同| 欧美久久久精品| 久久久www成人免费精品张筱雨| 国产精品福利小视频| 欧美在线视频a| 亚洲精品久久久久中文字幕二区| 国产精品人成电影| 国内偷自视频区视频综合| 欧美在线免费看| 欧美精品久久久久久久久久| 久久精品2019中文字幕| 亚洲国产精品悠悠久久琪琪| 国产欧美日韩免费看aⅴ视频| 一色桃子一区二区| 97精品视频在线观看| 成人国产亚洲精品a区天堂华泰| 97在线观看免费高清| 亚洲性xxxx| 欧美人在线视频| 亚洲精品少妇网址| 欧美国产精品人人做人人爱| 日韩美女毛茸茸| 欧美精品videos性欧美| 夜夜嗨av色一区二区不卡| 亚洲欧美另类国产| 亚洲欧美国产日韩天堂区| 亚洲摸下面视频| 亚洲视频在线观看视频| 欧美精品videofree1080p| 欧美激情精品久久久久久大尺度| 国产精品中文在线| 久久久久久久久久久久av| 亚洲国产欧美一区二区丝袜黑人| 日韩小视频在线观看| 久久人人爽亚洲精品天堂| 91极品视频在线| 亚洲精品一区二三区不卡| 国产一区二区日韩精品欧美精品| 成人精品一区二区三区电影黑人| 亚洲丁香久久久| 日韩在线观看电影| 亚洲第一男人天堂| 国产97在线|日韩| 91精品综合视频| 国产日本欧美一区二区三区在线| 51ⅴ精品国产91久久久久久| 久久视频国产精品免费视频在线| 高清一区二区三区日本久| 日韩小视频在线观看| 亚洲第一视频网| 国产精品一区二区电影| 韩国国内大量揄拍精品视频| 欧美电影《睫毛膏》| 另类美女黄大片| 日本午夜精品理论片a级appf发布| 日韩中文字幕在线精品| 在线一区二区日韩| 高清一区二区三区四区五区| 国产va免费精品高清在线| 亚洲欧洲国产伦综合| 午夜精品福利视频| 日韩精品在线免费观看| 亚洲福利精品在线| 国产成人一区二区三区|