IOS 網絡協議(一) 自簽名證書HTTPS文件上傳下載(下)

  • 網絡相關:

IOS 網絡協議(一) 自簽名證書HTTPS文件上傳下載(上)html

IOS 網絡協議(一) 自簽名證書HTTPS文件上傳下載(下)java

  • 音視頻相關

IOS音視頻(一)AVFoundation核心類nginx

IOS音視頻(二)AVFoundation視頻捕捉算法

IOS音視頻(三)AVFoundation 播放和錄音shell

IOS音視頻(四十三)AVFoundation 之 Audio Session數據庫

IOS音視頻(四十四)AVFoundation 之 Audio Queue Servicesapache

IOS音視頻(四十五)HTTPS 自簽名證書 實現邊下邊播swift

IOS音視頻(四十六)離線在線語音識別方案windows

IOS 網絡協議(一) 自簽名證書HTTPS文件上傳下載(下)瀏覽器

  • 證書相關概念
  1. 證書分爲2類:自簽名證書和CA證書。通常自簽名證書不能用來進行身份認證,若是一個server端使用自簽名證書,client端要麼被設置爲無條件信任任何證書,要麼須要將自簽名證書的公鑰和私鑰加入受信任列表。但這樣一來就增長了server的私鑰泄露風險
  2. TLS是傳輸層安全協議(Transport Layer Security)的縮寫,是一種對基於網絡的傳輸的加密協議,能夠在受信任的第三方公證基礎上作雙方的身份認證。TLS能夠用在TCP上,也能夠用在無鏈接的UDP報文上。協議規定了身份認證、算法協商、密鑰交換等的實現。
  3. HTTPS是在基於TLS/SSL的安全套接字上的的應用層協議,除了傳輸層進行了加密外,其它與常規HTTP協議基本保持一致
  4. 證書是TLS協議中用來對身份進行驗證的機制,是一種數字簽名形式的文件,包含證書擁有者的公鑰及第三方的證書信息。
  5. TLS基於CA的身份認證基本原理是:首先驗證方須要信任CA提供方本身的證書(CAcert),好比證書在操做系統的受信任證書列表中,或者用戶經過「安裝根證書」等方式將 CA的公鑰和私鑰加入受信任列表;而後CA對被驗證方的原始證書進行簽名(私鑰加密),生成最終的證書;驗證方獲得最終的證書後,利用CAcert中包含的公鑰進行解密,獲得被驗證方的原始證書。
  6. 根據RSA的加密原理,若是用CA的公鑰解密成功,說明該證書的確是用CA的私鑰加密的,能夠認爲被驗證方是可信的。
  7. 自簽名的證書沒法被吊銷,CA簽名的證書能夠被吊銷 能不能吊銷證書的區別在於,若是你的私鑰被黑客獲取,若是證書不能被吊銷,則黑客能夠假裝成你與用戶進行通訊
  8. 若是你的規劃須要建立多個證書,那麼使用私有CA的方法比較合適,由於只要給全部的客戶端都安裝了CA的證書,那麼以該證書籤名過的證書,客戶端都是信任的,也就是安裝一次就夠了
  9. 若是你直接用自簽名證書,你須要給全部的客戶端安裝該證書纔會被信任,若是你須要第二個證書,則還的挨個給全部的客戶端安裝證書2纔會被信任。
  • 證書類型:

x509的證書編碼格式有兩種:

  1. PEM(Privacy-enhanced Electronic Mail) 是明文格式的 以 -----BEGIN CERTIFICATE-----開頭,已-----END CERTIFICATE-----結尾,中間是通過base64編碼的內容,apache須要的證書就是這類編碼的證書 查看這類證書的信息的命令爲 :openssl x509 -noout -text -in server.pem 其實PEM就是把DER的內容進行了一次base64編碼
  2. DER 是二進制格式的證書 查看這類證書的信息的命令爲 :openssl x509 -noout -text -inform der -in server.der
  • 證書擴展名:
  1. .crt 證書文件 ,能夠是DER(二進制)編碼的,也能夠是PEM( ASCII (Base64) )編碼的 ,在類unix系統中比較常見
  2. .cer 也是證書 常見於Windows系統 編碼類型一樣能夠是DER或者PEM的,windows 下有工具能夠轉換crt到cer
  3. .csr 證書籤名請求 通常是生成請求之後發送給CA,而後CA會給你簽名併發回證書
  4. .key 通常公鑰或者密鑰都會用這種擴展名,能夠是DER編碼的或者是PEM編碼的 查看DER編碼的(公鑰或者密鑰)的文件的命令爲 openssl rsa -inform DER -noout -text -in xxx.key 查看PEM編碼的(公鑰或者密鑰)的文件的命令爲 openssl rsa -inform PEM -noout -text -in xxx.key
  5. .p12 證書 包含一個X509證書和一個被密碼保護的私鑰
  • 關於CA 簽名SSL證書

相對自簽證書的本身給本身頒證,由權威的證書受權機構(Certificate Authority)頒發的簽名證書,咱們稱之爲:CA證書 CA證書保證書持有者的身份和公鑰的擁有權 瀏覽器對CA證書是信任的

4.1 CA證書申請

  • 有不少網站能申請CA證書,如沃通,騰訊,阿里雲等,你們可根據本身的喜愛去申請 CA證書又分免費和不一樣價錢的,固然一分錢一分貨,對於咱們我的開發者來講,免費的CA證書就足夠了

4.1.1 從阿里雲申請CA證書

  • 1:找到阿里雲的CA證書 打開阿里雲主頁:www.aliyun.com/,選「產品」再選「CA…
    找到阿里雲的CA證書
  • 2:選擇:當即購買
  • 3:選擇免費型DV SSL(最主要是不用錢呵 :p),點當即購買,以下圖:
    選擇免費型DV SSL
  • 4:點「確認訂單」->」去支付「
  • 5:點」證書控制檯「
  • 6:點以下圖的」補全「,而後填寫我的資料
    點以下圖的」補全「
  • 7:信息補全後點提交,提交後大概一小時左右就能收到證書申請成功的信息,接下來就下載證書: 去到:」管理控制檯「->」產品與服務」->」個人證書「,選擇」下載」
    信息補全後點提交
  • 8:阿里雲能根據不一樣的服務器生成不一樣的證書,如tomcat,apache等,選擇本身所要的,以下圖:
    阿里雲能根據不一樣的服務器生成不一樣的證書

4.1.2

4.1.3

4.2 window生成自簽名證書

  • 1:先下載安裝Java JDK:www.oracle.com/technetwork…

  • 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 所用的密碼

4.3 mac生成自簽名證書

4.3.1 mac下經過keytool生成自簽名證書

  • 首先須要知道jdk安裝目錄,在terminal下輸入: /usr/libexec/java_home -V

    查看jdk版本

  • 2.跳轉到jdk目錄下

    跳轉到jdk目錄下

  • 輸入keytool查看

    輸入keytool查看

  • 3.建立簽名:終端輸入,keytool -genkey -v -keystore myKey.jks -keyalg RSA -keysize 2048 -validity 10000 -alias myAlias 因爲須要權限,執行命令時須要在前面加上sudo

    執行1

  • 按提示輸入相關信息,這裏會提示要輸入密碼,我使用的都是相同的密碼123456

    按提示輸入相關信息

  • 若是前面執行keytool -genkey -v -keystore myKey.jks -keyalg RSA -keysize 2048 -validity 10000 -alias myAlias命令時,沒有輸入sudo,則會報下面的錯誤:

    沒有輸入sudo,則會報下面的錯誤

  • 輸入sudo和密碼後執行結果以下:

    輸入sudo和密碼後執行結果以下

  • 查看keystore的指紋數據:keytool -v -list -keystore myKey.jks -alias myAlias -keypass 123456 -storepass 123456

    在這裏插入圖片描述

  • 導出證書certificate.pem: sudo keytool -export -rfc -alias myAlias -file upload_certificate.pem -keystore myKey.jks, 這裏一樣有權限問題,須要使用sudo

    導出證書certificate.pem

4.3.2 mac下經過openssl生成自簽名證書

4.4 nginx服務器配置自簽名證書

4.5 tomcat服務器配置自簽名證書

4.6 appache服務器配置自簽名證書

5. HTTPS 本身實現IOS端證書驗證

6. Alamofire實現SSL安全認證 源碼解析

7. HTTPS實現文件上傳

8. HTTPS實現文件下載

9. HTTPS文件傳輸經過moya+alamofire+rxswift實現

  1. www.jianshu.com/p/31bcddf44…

相關文章
相關標籤/搜索