精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一篇文章讓您了解HTTPS

網絡 網絡管理
既然有單向驗證,那么也有雙向驗證,即不僅僅客戶端需要校驗服務端,服務端也需要驗證客戶端。這種情況下,客戶端需要將自己的證書發給服務端做驗證,這種情況只需要將證書的KeyManager作為在init()的第一個參數來SSLContext就行了。

前段時間在做HTTPS相關的需求碰到了一些問題,今天有空整理一下HTTPS的相關知識,希望對您能有所幫助。

圖片圖片

什么是HTTPS

HTTPS,即HTTP Security,是建立在SSL / TSL協議之上,其中,TSL是SSL協議的升級版,TLS 1.0通常被標示為SSL 3.1,TLS 1.1為SSL 3.2,TLS 1.2為SSL 3.3,可以理解為同一套協議。他的作用主要以下三點:

防止竊聽。 所有信息都是加密傳播,第三方無法竊聽。

防止篡改。具有校驗機制,一旦被篡改,通信雙方會立刻發現。

防止冒充。配備身份證書,防止身份被冒充。本文將從android使用者的角度,盡量解釋清楚什么是HTTPS。

TLS驗證流程

TLS驗證流程

交互流程如下:

  1. 客戶端發出請求給服務端,請求的內容包括:
  1. 支持的協議版本,比如TLS 1.0版。
  2. 一個客戶端生成的隨機數,稍后用于生成"對話密鑰"。
  3. 支持的加密方法,比如RSA公鑰加密。
  4. 支持的壓縮方法。
  1. 服務器回應客戶端,包含以下內容:
  2. 確認使用的加密通信協議版本,比如TLS 1.0版本。如果瀏覽器與服務器支持的版本不一致,服務器關閉加密通信。
  3. 一個服務器生成的隨機數,稍后用于生成"對話密鑰"。
  4. 確認使用的加密方法,比如RSA公鑰加密。
  5. 服務器證書。
  6. 客戶端收到服務器回應以后,首先驗證服務器證書。如果證書不是可信機構頒布、或者證書中的域名與實際域名不一致、或者證書已經過期,就會向訪問者顯示一個警告,由其選擇是否還要繼續通信。
    如果證書沒有問題,客戶端就會從證書中取出服務器的公鑰。然后,向服務器發送下面三項信息。
  7. 一個隨機數。該隨機數用服務器公鑰加密,防止被竊聽。
  8. 編碼改變通知,表示隨后的信息都將用雙方商定的加密方法和密鑰發送。
  9. 客戶端握手結束通知,表示客戶端的握手階段已經結束。這一項同時也是前面發送的所有內容的hash值,用來供服務器校驗。
  10. 服務器收到客戶端的第三個隨機數pre-master key之后,計算生成本次會話所用的"會話密鑰"。然后,向客戶端最后發送下面信息。
  11. 編碼改變通知,表示隨后的信息都將用雙方商定的加密方法和密鑰發送。
  12. 服務器握手結束通知,表示服務器的握手階段已經結束。這一項同時也是前面發送的所有內容的hash值,用來供客戶端校驗。

至于為什么一定要用三個隨機數,來生成"會話密鑰",dog250解釋得很好:

"不管是客戶端還是服務器,都需要隨機數,這樣生成的密鑰才不會每次都一樣。由于SSL協議中證書是靜態的,因此十分有必要引入一種隨機因素來保證協商出來的密鑰的隨機性。

對于RSA密鑰交換算法來說,pre-master-key本身就是一個隨機數,再加上hello消息中的隨機,三個隨機數通過一個密鑰導出器最終導出一個對稱密鑰。

pre master的存在在于SSL協議不信任每個主機都能產生完全隨機的隨機數,如果隨機數不隨機,那么pre master secret就有可能被猜出來,那么僅適用pre master secret作為密鑰就不合適了,因此必須引入新的隨機因素,那么客戶端和服務器加上pre master secret三個隨機數一同生成的密鑰就不容易被猜出了,一個偽隨機可能完全不隨機,可是是三個偽隨機就十分接近隨機了,每增加一個自由度,隨機性增加的可不是一。"

HTTPS相關名詞

HTTPS涉及到的概念比較多,什么X509,.pem,.crt等等,理解了HTTPS的交互流程之后,先來理一理這些概念。

  • X509 - 這是一種證書標準,主要定義了證書中應該包含哪些內容.其詳情可以參考RFC5280,SSL使用的就是這種證書標準。
  • PEM - Privacy Enhanced Mail,打開看文本格式,以"-----BEGIN..."開頭, "-----END..."結尾,內容是BASE64編碼.查看PEM格式證書的信息:
openssl x509 -in certificate.pem -text -noout

Apache和*NIX服務器偏向于使用這種編碼格式.

  • DER - Distinguished Encoding Rules,打開看是二進制格式,不可讀.查看DER格式證書的信息:
openssl x509 -in certificate.der -inform der -text -noout

Java和Windows服務器偏向于使用這種編碼格式.

上面是證書標準和兩種常用的編碼格式。下面我們來認識一下都有哪些文件擴展名。

  • CRT - CRT應該是certificate的三個字母,其實還是證書的意思,常見于*NIX系統,有可能是PEM編碼,也有可能是DER編碼,大多數應該是PEM編碼,相信你已經知道怎么辨別.
  • CER - 還是certificate,還是證書,常見于Windows系統,同樣的,可能是PEM編碼,也可能是DER編碼,大多數應該是DER編碼.
  • KEY - 通常用來存放一個公鑰或者私鑰,并非X.509證書,編碼同樣的,可能是PEM,也可能是DER.查看KEY的辦法:
openssl rsa -in mykey.key -text -noout

如果是DER格式的話,同理應該這樣了:openssl rsa -in mykey.key -text -noout -inform der

  • CSR - Certificate Signing Request,即證書簽名請求,這個并不是證書,而是向權威證書頒發機構獲得簽名證書的申請,其核心內容是一個公鑰(當然還附帶了一些別的信息),在生成這個申請的時候,同時也會生成一個私鑰,私鑰要自己保管好.做過iOS APP的朋友都應該知道是怎么向蘋果申請開發者證書的吧.查看的辦法:(如果是DER格式的話照舊加上-inform der,這里不寫了)
openssl req -noout -text -in my.csr
  • PFX/P12 - predecessor of PKCS#12,對*nix服務器來說,一般CRT和KEY是分開存放在不同文件中的,但Windows的IIS則將它們存在一個PFX文件中,(因此這個文件包含了證書及私鑰)這樣會不會不安全?應該不會,PFX通常會有一個"提取密碼",你想把里面的東西讀取出來的話,它就要求你提供提取密碼,PFX使用的時DER編碼,如何把PFX轉換為PEM編碼?
openssl pkcs12 -in for-iis.pfx -out for-iis.pem -nodes

這個時候會提示你輸入提取代碼. for-iis.pem就是可讀的文本.生成pfx的命令類似這樣:openssl pkcs12 -export -in certificate.crt -inkey privateKey.key -out certificate.pfx -certfile CACert.crt

其中CACert.crt是CA(權威證書頒發機構)的根證書,有的話也通過-certfile參數一起帶進去.這么看來,PFX其實是個證書密鑰庫.

  • JKS - 即Java Key Storage,這是Java的專利,跟OpenSSL關系不大,利用Java的一個叫"keytool"的工具,可以將PFX轉為JKS,當然了,keytool也能直接生成JKS,不過在此就不多表了.
  • BKS - 來自BouncyCastleProvider,它使用的也是TripleDES來保護密鑰庫中的Key,它能夠防止證書庫被不小心修改(Keystore的keyentry改掉1個bit都會產生錯誤),BKS能夠跟JKS互操作。通過以下命令可以將crt轉換成bks,也就是說,其實bks就是上文說的證書文件,jks也是。
keytool -importcert -trustcacerts -keystore e:\key.bks -file e:\server.crt -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider

bks的生成參考:SSL通信中使用的bks格式證書的生成

Java上的HTTPS

java上使用HTTPS很簡單,一個典型的HTTPS方式如下:

URL url = new URL("https://google.com");  
HttpsURLConnection urlConnection = url.openConnection();  
InputStream in = urlConnection.getInputStream();

此時使用的是默認的SSLSocketFactory,與下段代碼使用的SSLContext是一致的

private synchronized SSLSocketFactory getDefaultSSLSocketFactory() {  
  try {
    SSLContext sslContext = SSLContext.getInstance("TLS");
    sslContext.init(null, null, null);
    return defaultSslSocketFactory = sslContext.getSocketFactory();
  } catch (GeneralSecurityException e) {
    throw new AssertionError(); // The system has no TLS. Just give up.
  }
}

這段代碼里面最重要的方法是sslContext.init(null, null, null);,這里有三個參數,分別是:

  • KeyManager[],自己的證書,用來校驗服務端是否可信,如果是單向校驗則傳空,表示不需要校驗服務端。
  • TrustManager[],認證服務端證書是否可信,如果傳空則使用android自己的證書庫,如果服務端證書的辦法機構在默認庫里面,則校驗通過。

有時候CA也是不可信的,為了獲得更高的安全新,需要我們自己指定新人的錨點,可以采用如下的代碼:

// 取到證書的輸入流
InputStream is = new FileInputStream("anchor.crt");  
CertificateFactory cf = CertificateFactory.getInstance("X.509");  
Certificate ca = cf.generateCertificate(is);


// 創建 Keystore 包含我們的證書
String keyStoreType = KeyStore.getDefaultType();  
KeyStore keyStore = KeyStore.getInstance(keyStoreType);  
keyStore.load(null);  
keyStore.setCertificateEntry("anchor", ca);


// 創建一個 TrustManager 僅把 Keystore 中的證書 作為信任的錨點
String algorithm = TrustManagerFactory.getDefaultAlgorithm();  
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(algorithm);  
trustManagerFactory.init(keyStore);  
TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();


// 用 TrustManager 初始化一個 SSLContext
SSLContext sslContext = SSLContext.getInstance("TLS");  
sslContext.init(null, trustManagers, null);  
return sslContext.getSocketFactory();

這種情況下,只有 anchor.crt 以及他簽發的證書才會被信任。

  • SecureRandom,也就是生成隨機數的策略,一般都是直接new SecureRandom()作為參數傳進去。

注意這里使用的是單向認證,也就是只需要客戶端驗證服務端的證書,客戶端本地部緩存證書,所以這里sslContext.init()方法的三個參數都是空的。

默認的 SSLSocketFactory 校驗服務器的證書時(也就是TrustManager[]傳空的時候),會信任設備內置的100多個根證書。

既然有單向驗證,那么也有雙向驗證,即不僅僅客戶端需要校驗服務端,服務端也需要驗證客戶端。這種情況下,客戶端需要將自己的證書發給服務端做驗證,這種情況只需要將證書的KeyManager作為在init()的第一個參數來SSLContext就行了。


責任編輯:武曉燕 來源: java知路
相關推薦

2020-10-09 08:15:11

JsBridge

2019-09-11 08:52:24

MVCMVPMVVM

2022-08-09 08:00:55

AWS安全API

2023-05-12 08:19:12

Netty程序框架

2021-06-30 00:20:12

Hangfire.NET平臺

2023-05-08 08:21:15

JavaNIO編程

2021-03-05 18:04:15

JavaScript循環代碼

2021-03-09 14:04:01

JavaScriptCookie數據

2021-09-27 09:18:30

ListIterato接口方法

2021-01-26 23:46:32

JavaScript數據結構前端

2020-12-08 08:09:49

SVG圖標Web

2024-01-30 13:47:45

2023-07-30 15:18:54

JavaScript屬性

2021-02-26 20:01:57

SVG濾鏡元素

2023-09-06 14:57:46

JavaScript編程語言

2021-05-18 08:30:42

JavaScript 前端JavaScript時

2024-04-19 14:23:52

SwitchJavaScript開發

2021-06-24 09:05:08

JavaScript日期前端

2021-02-02 18:39:05

JavaScript

2021-01-29 18:41:16

JavaScript函數語法
點贊
收藏

51CTO技術棧公眾號

精品国产鲁一鲁一区二区张丽| 久久精品亚洲| 日韩欧美一区二区久久婷婷| 51色欧美片视频在线观看| 国产精品亚发布| 国产精品无码毛片| 欧美黄色a视频| 亚洲成av人综合在线观看| 欧洲精品国产| 超碰人人人人人人| 丝袜美腿亚洲一区| 久久久久久有精品国产| 国产日产在线观看| 日韩免费电影在线观看| 9191精品国产综合久久久久久| 女性女同性aⅴ免费观女性恋 | 激情久久久久久久久久久久久久久久| 久操成人在线视频| 精品熟妇无码av免费久久| 亚洲日本va| 欧美亚洲综合一区| 欧美一二三在线| 色婷婷777777仙踪林| 国产在线视频网| 粉嫩aⅴ一区二区三区四区| 国产成人精品一区二区三区| 国产一级视频在线播放| 日韩一区二区三区免费播放| 日韩成人中文字幕| 日本黄色www| 欧美性www| 色综合婷婷久久| 日韩av中文字幕第一页| 国产三级在线播放| 中文字幕亚洲在| 欧美精品123| 五月婷婷激情在线| 成av人片一区二区| 高清av免费一区中文字幕| 97在线播放免费观看| 秋霞国产午夜精品免费视频| 欧美在线视频一区| 99热在线观看免费精品| 国产综合自拍| 欧美福利小视频| 中文字幕视频在线免费欧美日韩综合在线看| av黄色在线网站| 福利在线导航136| 一区二区免费在线播放| 六月婷婷激情网| 福利在线视频网站| 中文字幕一区二区在线观看| 亚洲一区二区在线观| 成年人视频网站在线| 久久九九久久九九| 日本一区不卡| 婷婷成人激情| 国产精品日韩成人| 手机福利在线视频| 成人短视频在线| 一区二区日韩电影| 精品视频免费在线播放| 免费v片在线观看| 欧美日韩亚洲高清| 爱情岛论坛vip永久入口| 精品无人乱码一区二区三区| 在线观看精品一区| 九九热免费在线观看| 精品一区二区三区亚洲| 日韩一区二区视频| av电影在线播放| 日韩成人动漫在线观看| 亚洲图片制服诱惑| 99久久精品久久亚洲精品| 伊人久久大香线蕉精品组织观看| 欧美老女人xx| 五月天激情四射| 日本欧美韩国一区三区| 91人人爽人人爽人人精88v| jlzzjlzz亚洲女人18| aa级大片欧美| 夜夜爽99久久国产综合精品女不卡 | 99热99re6国产在线播放| 五月天欧美精品| 亚洲精品怡红院| 欧美影院视频| 亚洲福利视频网| 久久久99精品视频| 久久久久久久极品| 视频一区二区不卡| 91在线观看免费网站| 欧美一级特黄aaaaaa| 国产欧美日韩三区| 国产传媒久久久| 婷婷激情一区| 日韩精品一区二区三区视频| 亚洲黄色在线网站| 91成人精品| 日韩av手机在线| av高清一区二区| 久久久久久久电影| 菠萝蜜视频在线观看入口| 亚洲欧洲日本韩国| 91精品国产色综合久久不卡蜜臀| 亚洲av成人无码一二三在线观看| 日韩欧美电影| 97精品国产91久久久久久| 国产精品伦理一区| 久久综合999| av动漫在线播放| 99蜜月精品久久91| 亚洲精品videossex少妇| 天天色影综合网| 久久久久99| 国产一区二区无遮挡| 午夜伦理在线| 欧亚洲嫩模精品一区三区| 日韩免费高清一区二区| 午夜久久一区| 国产精品丝袜高跟| 色视频在线观看免费| 夜夜夜精品看看| 国内外成人免费在线视频| 日韩有码av| 久久久久成人网| 国产乱子伦精品无码码专区| 国产三级久久久| www一区二区www免费| 日韩视频一二区| 久久视频国产精品免费视频在线| 精品国产xxx| 99精品国产99久久久久久白柏| 永久免费网站视频在线观看| 久久久久黄色| 综合网日日天干夜夜久久| 国产字幕在线观看| 久久综合色播五月| 男人日女人下面视频| 一区二区三区自拍视频| 欧美肥臀大乳一区二区免费视频| 国产不卡一区二区在线播放| 99久久精品无免国产免费| 国产精品久久久久aaaa| 污污的网站18| 成人免费电影网址| 国产精品激情自拍| 国产免费av在线| 日韩欧美成人区| 午夜男人的天堂| 亚洲免费大片| 久久久久久a亚洲欧洲aⅴ| av手机在线观看| 亚洲国产一区二区三区在线观看| 日韩欧美亚洲国产| aaa亚洲精品| 成人一区二区三| 精品视频97| 成人国产在线激情| 污污片在线免费视频| 精品国产伦一区二区三区观看体验 | 欧美激情精品久久久久| 韩国av在线免费观看| 亚洲成精国产精品女| 欧美深性狂猛ⅹxxx深喉| 麻豆精品网站| 在线免费一区| 91精品导航| 欧洲日本亚洲国产区| 韩国中文免费在线视频| 欧美日韩高清在线| 欧美日韩激情在线观看| 成人福利视频网站| 777米奇影视第四色| 久久影视一区| 国产精品一区二区a| 少妇一区视频| 久久久99久久精品女同性| www.天堂在线| 欧美午夜片在线免费观看| 成人激情五月天| 国产黄色91视频| 日韩av片在线看| 欧美高清视频在线观看mv| 99国产高清| 都市激情综合| 久热精品视频在线观看| 日本激情一区二区| 制服诱惑一区二区| 国产偷久久久精品专区| 日韩av免费| 欧美日韩国产二区| 精品欧美不卡一区二区在线观看| 欧美猛男gaygay网站| 国产无套内射又大又猛又粗又爽| 国产日韩精品一区二区三区| 香蕉网在线视频| 久久久久.com| 欧美在线观看视频免费| av在线不卡免费观看| 国产99在线免费| 国产精品伦一区二区| 97国产在线观看| 好吊日视频在线观看| 亚洲欧美另类中文字幕| 国产探花精品一区二区| 色香蕉久久蜜桃| 国产一级在线播放| 亚洲欧洲色图综合| 中文字幕国产综合| 成人在线一区二区三区| 九九热精品在线播放| 欧美亚洲在线| 欧美激情亚洲天堂| 五月开心六月丁香综合色啪 | 一级女性全黄久久生活片免费| 国产肥白大熟妇bbbb视频| 国产99久久久精品| 日本一二区免费| 日韩极品在线观看| 精品欧美一区免费观看α√| 黑丝一区二区三区| 热这里只有精品| 日韩欧美三级| 日本在线视频一区| 猛男gaygay欧美视频| 国产伦精品一区二区三| 免费观看在线一区二区三区| 国产伦精品一区二区三区精品视频| 蜜桃视频在线观看播放| 国模视频一区二区| av成人福利| 欧美精品福利在线| 国产精品偷拍| 欧美激情a在线| 日本成人不卡| 欧美成人精品在线播放| 欧美天天影院| 久久精品亚洲热| 黄色的网站在线观看| 精品国产视频在线| 麻豆传媒在线免费看| 中文字幕日韩在线播放| 三区四区电影在线观看| 在线看片第一页欧美| 国产精品ⅴa有声小说| 亚洲日本成人女熟在线观看| 黄网在线免费| 国产午夜精品一区二区三区| 精品视频一二三| 在线播放国产一区二区三区| 国产视频三级在线观看播放| 亚洲一二三在线| wwwxxx在线观看| 色噜噜狠狠狠综合曰曰曰88av| porn视频在线观看| 精品国产一区二区三区久久狼黑人 | 国产精品久久久久aaaa樱花 | 亚洲欧美日韩偷拍| 99精品欧美一区| 在线免费观看成年人视频| 久久久亚洲午夜电影| 波多野吉衣中文字幕| 欧美国产激情二区三区| 人人澡人人澡人人看| 一区二区三区高清| 日韩免费视频一区二区视频在线观看| 欧美性猛xxx| 亚洲视屏在线观看| 欧美一级高清片| 欧美一级特黄aaaaaa大片在线观看| 亚洲精品99999| 成人免费一区二区三区视频网站| 日韩中文字幕亚洲| 丝袜国产在线| 欧美与欧洲交xxxx免费观看| 免费在线成人激情电影| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 一区二区久久久久久| 国产成人无码一区二区在线播放| 欧美日韩在线一区二区| 亚洲国产精品久久久久久久| 亚洲免费av网址| 国产丝袜在线| 热久久这里只有精品| 国产精品亚洲欧美一级在线| 国产日韩欧美二区| 久久视频精品| 霍思燕三级露全乳照| 美日韩一级片在线观看| 精品人妻在线视频| 国产精品乱码妇女bbbb| 日韩免费一二三区| 欧美日韩国产综合视频在线观看| www.久久成人| 亚洲少妇激情视频| 日本高清成人vr专区| 国产精品久久一区主播| 91在线一区| 亚洲自拍的二区三区| 国产一区二区三区成人欧美日韩在线观看 | 国产啊啊啊视频在线观看| 国产精品成人va在线观看| 欧美日本三级| 午夜一区二区三视频在线观看| 国产精品www994| 亚洲77777| 91农村精品一区二区在线| 午夜69成人做爰视频| 欧美色大人视频| 久久伊伊香蕉| 久久久亚洲精选| 九九99久久精品在免费线bt| 日韩av一区二区三区在线观看| 亚洲精品1区| 人妻巨大乳一二三区| 欧美激情一区二区三区全黄| 日日噜噜噜噜人人爽亚洲精品| 日韩欧美一区在线观看| 午夜在线播放| 国产精品爱啪在线线免费观看| 欧美黄色影院| 欧美这里只有精品| 国产黑丝在线一区二区三区| 亚洲熟女少妇一区二区| 一本色道久久综合亚洲精品按摩| 日本美女一级视频| 欧美激情性做爰免费视频| 成人豆花视频| 中文精品视频一区二区在线观看| 天堂精品中文字幕在线| 成人网站免费观看| 欧美日韩国产综合视频在线观看中文 | xxxx日本少妇| 91精品久久久久久久久99蜜臂| yiren22亚洲综合伊人22| 日本精品视频在线观看| 亚洲v天堂v手机在线| 男人天堂1024| 91女神在线视频| 岛国av中文字幕| 亚洲人成电影网站色…| 伊人久久国产| 日韩福利一区二区三区| 日本亚洲三级在线| 亚洲午夜精品久久久久久高潮| 欧美主播一区二区三区美女| av福利精品| 成人免费视频网址| 一个色综合网| 91精品人妻一区二区三区四区| 亚洲主播在线播放| 免费观看黄色一级视频| 国语自产精品视频在线看| 福利在线一区| 国产精品专区在线| 久久夜色精品国产欧美乱极品| 五月天婷婷久久| 影音先锋欧美精品| 天天综合91| 国产在线视频在线| aaa国产一区| 久久久久久久久久一级| 日韩网站免费观看高清| 久久天堂久久| 一二三四视频社区在线| 久久久午夜电影| 97国产精品久久久| 欧美激情一级精品国产| 亚洲最好看的视频| 中文字幕在线综合| 一区二区三区精品| 九九热视频在线观看| 成人信息集中地欧美| 一二三区精品| 国产美女永久免费无遮挡| 555www色欧美视频| 精精国产xxx在线视频app| 日韩在线电影一区| 国产剧情一区在线| 99精品视频99| 日韩专区中文字幕| 国产精品男女| 性生活免费在线观看| 亚洲午夜精品在线| 1024免费在线视频| 国产精品日韩一区二区三区| 丝袜亚洲另类丝袜在线| 欧美日韩精品在线观看视频| 日韩精品视频在线观看网址| 欧美高清xxx| 美女av免费在线观看| 亚洲欧美日韩国产一区二区三区| 污污网站在线免费观看| 成人高清视频观看www| 国产日韩1区| 青青草偷拍视频| 在线观看中文字幕亚洲| 超碰97久久国产精品牛牛| 国产九九在线观看| 疯狂做受xxxx高潮欧美日本|