https://blog.csdn.net/gary_yan/article/details/77973711html
一:https的簡單介紹及SSL證書的生成
二:https的SSL證書在服務器端的部署,基於tomcat,spring boot
三:讓服務器同時支持http、https,基於spring boot
四:https的SSL證書在Android端基於okhttp,Retrofit的使用java
全部文章會優先在:
微信公衆號「顏家大少」中發佈
以後才發佈到下面博客中:
顏家大少的博客 :http://blog.csdn.net/gary_yan
轉載請標明出處android
https的介紹
SSL證書的介紹
自簽名SSL證書介紹及生成方法
CA證書介紹及申請算法
HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全爲目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL(Secure Socket Layer)。spring
SSL協議提供的服務主要有:
1)認證用戶和服務器,確保數據發送到正確的客戶機和服務器
2)加密數據以防止數據中途被竊取
3)維護數據的完整性,確保數據在傳輸過程當中不被改變數據庫
關於https的介紹,網上有不少更詳細更專業的資料,在此只做簡單介紹,讓你們有一些概念性的瞭解,並最終完成android端和服務器端的https的實現。apache
SSL證書是數字證書的一種,相似於駕駛證、護照和營業執照的電子副本。
SSL證書的兩大做用:數據加密和身份認證
SSL 證書遵照 SSL協議,經過在客戶端瀏覽器和Web服務器之間創建一條SSL安全通道
一個有效、可信的 SSL 數字證書包括一個公共密鑰和一個私用密鑰。公共密鑰用於加密信息,私用密鑰用於解譯加密的信息。所以,瀏覽器指向一個安全域時,SSL 將同步確認服務器和客戶端,並建立一種加密方式和一個惟一的會話密鑰。它們能夠啓動一個保證消息的隱私性和完整性的安全會話。瀏覽器
所謂自簽名證書,就是本身頒發給本身的證書 ,因此頒證的主體是不可信任的
自簽證書是不會被瀏覽器信任的證書的,用戶在訪問自簽證書時,瀏覽器會警告用戶此證書不受信任,須要人工確認是否信任此證書,以下圖:
既然自簽證書是不可信任的,那爲什麼還有人包括12306也在用自簽證書呢?
主要緣由是:
1)自簽證書是免費的
2)自簽證書相對申請CA證書,流程更簡單
3)自簽證書一樣能夠對數據進行加密
4)自簽證書的有效期能夠設置很長,免去續簽的麻煩
5)自簽證書更方便測試,好比說你想生成多少個不一樣服務器ip的均可以
因此對於一些我的開發者來講使用自簽證書可能會更方便,只要你能接受別人瀏覽你網站時彈出的提醒:不安全tomcat
相對自簽證書的本身給本身頒證,由權威的證書受權機構(Certificate Authority)頒發的簽名證書,咱們稱之爲:CA證書
CA證書保證書持有者的身份和公鑰的擁有權
瀏覽器對CA證書是信任的,以下圖:
安全
自簽證書雖然提示:不安全。但仍是有不少上面已提到的好處,因此下面先說說自簽證書的生成,主要使用Java JDK下的:keytool.exe
1:先下載安裝Java JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2:安裝完後,根據實際的路徑找到keytool.exe,如個人在此路徑:C:\Program Files (x86)\Java\jdk1.8.0_101\bin\keytool.exe
3:生成keystore。打開命令行(cmd),去到keytool所在的路徑,運行:
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore d:\mykeystore\keystore.p12 -validity 3650 -ext san=ip:192.168.100.132 -dname "CN=garyyan, OU=mycompany, O=mycompany, L=gd, ST=gd, C=china"
此命令中間只須要輸入密碼,就能生成keystore,假設密碼是:123456
其中:
1)keystore可理解爲一個數據庫,能夠存不少個組數據。
每組數據主要包含下面兩種數據:
a:密鑰實體(Key entity)——密鑰(secret key)又或者是私鑰和配對公鑰(採用非對稱加密)
b:可信任的證書實體(trusted certificate entries)——只包含公鑰
2)-keystore d:\mykeystore\keystore.p12,指定在d:\mykeystore(先要手動建立此文件夾),生成keystore:keystore.p12
3)-alias tomcat,爲其指明在keystore中的惟一的別名:tomcat ,由於keystore中可能還存有其它的別名,如:tomcat 2
4)-storetype PKCS12指明密鑰倉庫類型是PKCS12
5)-keyalg RSA,指定加密算法,本例中的採用通用的RAS加密算法
6)-keysize 2048指定密鑰的長度爲2048
7)-validity 3650 指定證書的有效期爲3650天
8)-ext san=ip:192.168.100.132請根據你的服務器的IP地址設置,若是不進行設置,客戶端在訪問的時候可能會報錯
9)-dname 「CN=garyyan, OU=mycompany,O=mycompany,L=gd, ST=gd, C=china」
其中:」CN=(名字與姓氏), OU=(組織單位名稱), O=(組織名稱), L=(城市或區域名稱), ST=(州或省份名稱), C=(單位的兩字母國家代碼)」,我在測試的過程當中發現隨便填就行
4:導出公鑰證書(主要用於客戶端):
運行命令:
keytool -export -keystore d:\mykeystore\keystore.p12 -alias tomcat -file mycer.cer -storepass 123456
其中:
1)-keystore d:\mykeystore\keystore.p12 是指上面的keystore文件
2)-alias tomcat是指定別名爲tomcat的那一組
3)-file mycer.cer指定在當前目錄生成名爲mycer.cer的證書
4)-storepass 123456是上面生成keystore 所用的密碼
有不少網站能申請CA證書,如沃通,騰訊,阿里雲等,你們可根據本身的喜愛去申請
CA證書又分免費和不一樣價錢的,固然一分錢一分貨,對於咱們我的開發者來講,免費的CA證書就足夠了,
我我的主要是想解決當別人訪問個人https網站時彈出「不安全」的這個問題,由於「不安全」這個提示被人感受很像釣魚網站 :P
下面主要講的是去阿里雲申請免費型DV SSL證書,此種證書是每一個證書綁定一個域名,若有多個域名可申請多個證書
1:找到阿里雲的CA證書
打開阿里雲主頁:https://www.aliyun.com/,選「產品」再選「CA證書」以下圖:
2:選擇:當即購買
3:選擇免費型DV SSL(最主要是不用錢呵 :p),點當即購買,以下圖:
4:點「確認訂單」->」去支付「
5:點」證書控制檯「
6:點以下圖的」補全「,而後填寫我的資料
7:信息補全後點提交,提交後大概一小時左右就能收到證書申請成功的信息,接下來就下載證書:
去到:」管理控制檯「->」產品與服務」->」個人證書「,選擇」下載」
8:阿里雲能根據不一樣的服務器生成不一樣的證書,如tomcat,apache等,選擇本身所要的,以下圖:
至此,」Https系列之一:https的簡單介紹及SSL證書的生成」已完成。
更多內容請看:Https系列之二:https的SSL證書在服務器端的部署,基於tomcat,spring boot