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

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

關于Retrofit使用HTTPS的相關問題

2019-11-08 00:24:38
字體:
來源:轉載
供稿:網友

先貼一個Google官方對https和ssl的說明: https://developer.android.com/training/articles/security-ssl.html 首先說為什么使用https,簡單點說就是為了防止數據傳輸過程中信息被竊取或偷換。防止中間人攻擊。 分兩種情況來說:

一、服務器使用了知名CA發放的證書

從 Android 4.2 (Jelly Bean) 開始,Android 目前包含在每個版本中更新的 100 多個 知名CA。CA 具有一個證書和一個私鑰,這點與服務器相似。為服務器發放證書時,CA 使用其私鑰簽署服務器證書。然后,客戶端可以驗證該服務器是否具有平臺已知的 CA 發放的證書。 假設有一個由知名 CA 發放證書的網絡服務器,那么,可以使用直接使用retrofit即可發起安全的請求。對于驗證證書和主機名的細節,OKHttp 框架在 API 中已經考慮了這些細節。

二、服務器使用了未知的證書頒發機構(或自簽署證書的情況)

在這種情況下,由于您具有系統不信任的 CA,將發生 SSLHandshakeException。原因可能是您有一個來自 Android 還未信任的新 CA 的證書,或您的應用在沒有 CA 的較舊版本上運行。CA 未知的原因通常是因為它不是公共 CA,而是政府、公司或教育機構等組織發放的僅供自己使用的私有 CA。 此過程可能有點復雜,下面的示例展示了這個過程,從 InputStream 獲取一個特定的 CA,用該 CA 創建 KeyStore,然后用后者創建和初始化 TrustManager。TrustManager 是系統用于從服務器驗證證書的工具,可以使用一個或多個 CA 從 KeyStore 創建,而創建的 TrustManager 將僅信任這些 CA。 如果是新的 TrustManager,此示例將初始化一個新的 SSLContext,后者可以提供一個 SSLSocketFactory,您可以通過 OkHttpClient添加socketFactory(SSLSocketFactory)。這樣一來,連接將使用您的 CA 驗證證書。 具體步驟如下: 1. 使用命令行獲得服務器的數字證書。 echo -n | openssl s_client -connect api.abc.com:443 | sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p’ > server.cert 注意粗體內容要分別替換成你的服務器地址和要保存到本地的數字證書文件名稱。 2. 轉化數字證書為BKS格式 我們知道java本身支持的證書格式jks,但是遺憾的是在android當中并不支持jks格式正式,而是需要bks格式的證書。因此我們需要將jks證書轉換成bks格式證書。 首先要下載bouncycastle 的JAR,這是目前的最新版: http://repo2.maven.org/maven2/org/bouncycastle/bcPRov-jdk16/1.46/bcprov-jdk16-1.46.jar 執行以下命令進行轉換: keytool -importcert -v -trustcacerts -file “server.cert” -alias server_alias -keystore “server.bks” -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath “bcprov-jdk16-146.jar” -storetype BKS -storepass bkspassWord

同樣注意黑體字部分是你需要修改的。 將生成好的server.bks拷貝到android工程的res/raw目錄 開始代碼:

public static SSLSocketFactory getSSLSocketFactory(Context context){ try { KeyStore ksTrust = KeyStore.getInstance("BKS"); InputStream instream = context.getResources() .openRawResource(R.raw.server); ksTrust.load(instream, "bkspassword".toCharArray()); //TrustManager decides which certificate authorities to use. TrustManagerFactory tmf = TrustManagerFactory .getInstance("X509");//TrustManagerFactory.getDefaultAlgorithm() tmf.init(ksTrust); SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, tmf.getTrustManagers(), null); return sslContext.getSocketFactory(); } catch (KeyStoreException | IOException | NoSuchAlgorithmException | CertificateException | KeyManagementException e) { e.printStackTrace(); } return null; }

然后在初始化retrofit的時候把SSLSocketFactory加進去

okHttpClient = new OkHttpClient.Builder() .addInterceptor(httpLoggingInterceptor) .socketFactory(sslSocketFactory) .build();
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品美女视频网站| 精品国内自产拍在线观看| 26uuu另类亚洲欧美日本老年| 欧美极品在线视频| 91精品国产高清久久久久久91| 国产精品久久久久久五月尺| 国产视频精品久久久| 亚洲国内精品视频| 亚洲aaaaaa| 欧美精品少妇videofree| 国产精品视频免费在线观看| 日韩精品亚洲视频| 日韩国产欧美区| 成人免费大片黄在线播放| 久久久久久com| 国产91精品在线播放| 欧美大胆在线视频| 国内偷自视频区视频综合| 日韩av黄色在线观看| 97在线观看视频国产| 日本一区二区不卡| 欧美中文在线字幕| 亚洲欧美日韩爽爽影院| 国产一区二区三区毛片| 日韩视频在线观看免费| 26uuu国产精品视频| 92福利视频午夜1000合集在线观看| 精品久久久久久电影| 亚洲免费电影在线观看| 亚洲激情中文字幕| 国内精品国产三级国产在线专| 欧美激情中文字幕乱码免费| 一区二区三区四区视频| 亚洲精品久久在线| 亚洲999一在线观看www| 日韩精品免费在线视频观看| 日韩成人免费视频| 97国产精品免费视频| 国产极品精品在线观看| 欧美亚洲第一区| 一本色道久久综合亚洲精品小说| 国产精品欧美激情| 日韩国产高清视频在线| 欧美肥老太性生活视频| 久久九九全国免费精品观看| 色综合天天综合网国产成人网| 91精品一区二区| 懂色aⅴ精品一区二区三区蜜月| 久久久精品久久| 国产精品高潮视频| 日韩av综合网站| 亚洲图片欧洲图片av| 日韩在线视频网站| 国产成人精品久久久| 日韩视频第一页| 国产精品久久久久久久久久99| 国产精品久久久久久婷婷天堂| 久久免费观看视频| 亚洲精品自拍偷拍| 国产丝袜一区二区三区| 精品久久久久久中文字幕一区奶水| 国产日韩欧美电影在线观看| 日韩在线视频线视频免费网站| 欧美成人免费大片| 欧美高清自拍一区| 国产精品扒开腿做爽爽爽视频| 亚洲男人第一av网站| 国产日韩欧美夫妻视频在线观看| 韩国19禁主播vip福利视频| 在线观看精品自拍私拍| 日韩av电影免费观看高清| 中文字幕亚洲国产| 国产亚洲精品久久久久久777| 久久久久99精品久久久久| 北条麻妃一区二区三区中文字幕| 久久99精品视频一区97| xx视频.9999.com| 亚洲aⅴ日韩av电影在线观看| 亚洲国产成人久久综合一区| 日韩视频中文字幕| 久久影视电视剧免费网站清宫辞电视| 日韩精品在线视频观看| 国产精品一区二区久久| 欧美国产激情18| 国产精品直播网红| 欧美激情在线观看| 国产专区精品视频| 热久久视久久精品18亚洲精品| 亚洲直播在线一区| 欧美xxxx14xxxxx性爽| 伊人久久精品视频| 亚洲韩国欧洲国产日产av| 97婷婷涩涩精品一区| 国产色综合天天综合网| 亚洲日本aⅴ片在线观看香蕉| 欧美高清videos高潮hd| 亚洲精品日产aⅴ| 日韩欧美在线一区| 欧美激情国产精品| 成人激情在线观看| 久久色精品视频| 国产99久久久欧美黑人| 欧美大尺度电影在线观看| 亚洲成av人影院在线观看| 国产精品免费久久久久久| 亚洲国产精品久久精品怡红院| 亚洲最大的成人网| 国产欧美在线视频| 超碰日本道色综合久久综合| 91久久久久久久久久久久久| 欧美精品性视频| 成人在线播放av| 国产精品爽爽ⅴa在线观看| 亚洲成人av片在线观看| 国产精品羞羞答答| 91在线高清免费观看| 欧美与欧洲交xxxx免费观看| 午夜精品福利视频| 精品在线欧美视频| 日韩电影中文字幕在线| 欧美—级a级欧美特级ar全黄| 国产精品男人的天堂| 成人久久久久久久| 韩国19禁主播vip福利视频| 亚洲欧洲在线播放| 欧美日韩免费看| 国产精品吊钟奶在线| 95av在线视频| 亚洲一区二区三区毛片| 国产精品精品视频一区二区三区| 日韩禁在线播放| 欧美激情一二区| 国产美女精彩久久| 亚洲男人的天堂在线播放| 欧美高清电影在线看| 欧美激情高清视频| 国产成人福利夜色影视| 91精品国产高清久久久久久91| 亚洲综合日韩在线| 亚洲qvod图片区电影| 欧美性猛交xxxx免费看漫画| 久久精品久久精品亚洲人| 亚洲午夜色婷婷在线| 亚洲国产私拍精品国模在线观看| 欧美第一淫aaasss性| 国产在线精品播放| 国产精品27p| 国产成人a亚洲精品| 国产99久久精品一区二区永久免费| 久久精品国产69国产精品亚洲| 亚洲天堂男人天堂| 中文字幕亚洲字幕| 亚洲国产成人久久综合一区| xvideos亚洲| 国产99久久久欧美黑人| 欧美激情久久久久久| 亚洲а∨天堂久久精品9966| 69国产精品成人在线播放| 久久久久久久久久国产精品| 亚洲午夜精品久久久久久久久久久久| 一区二区欧美日韩视频| 日韩女优人人人人射在线视频| 亚洲欧美资源在线| 精品国内自产拍在线观看|