1. 程式人生 > >HTTPS相關知識

HTTPS相關知識

ets 實體 secure tran article 定義 ace apache stc

概念

HTTP(HyperText Transfer Protocol超文本傳輸協議)

以明文方式發送內容,不提供任何方式的數據加密,是一個客戶端和服務器端請求和應答的標準(TCP),用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議

HTTPSHyper Text Transfer Protocol over Secure Socket Layer基於安全套接字的超文本傳輸協議)

是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL

作用:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性。

SSL(Secure Sockets Layer安全套接字)

是Web瀏覽器與Web服務器之間安全交換信息的協議,提供兩個基本的安全服務:鑒別與保密

TSL(Transport Layer Security安全傳輸層)

用於在兩個通信應用程序之間提供保密性和數據完整性

對稱加密與非對稱加密

對稱加密:加密與解密采用相同的密鑰

非對稱加密:有兩個不同的密鑰,任意一個都可以成為加密密鑰,另外一個就是解密密鑰。

公鑰與私鑰

使用非對稱加密時,一個密鑰公之於眾,稱為公鑰;另一個密鑰除密鑰擁有者,其他人都不知道,稱為私鑰。

數字簽名

基於非對稱加密。

服務器-->瀏覽器:擁有私鑰的一方使用私鑰對內容進行加密後發送出去,由於任何人都可以獲得改私鑰對應的公鑰,所以擁有公鑰者使用公鑰對內容進行解密,能正確解密,說明該內容必然為擁有私鑰的那一方發出的

瀏覽器--->服務器:擁有公鑰的實體使用公鑰對內容進行加密,只有私鑰擁有者可以進行解密

數字證書

以數字簽名的方式通過權威認證機構CA有效地進行網上認證,幫助各個實體識別對方身份

數字證書就是一個文件,保存了某個實體的信息及該實體所擁有的私鑰對應的公鑰。

CA(Certificate Authority證書權威機構)

是數字證書認證中心的簡稱,是指發放、管理、廢除數字證書的機構。

CA的作用是檢查證書持有者身份的合法性,並簽發證書(在證書上簽字),以防證書被偽造或篡改,以及對證書和密鑰進行管理。

SSL與CA

CA是數字證書管理機構,SSL證書是數字證書的一種,CA簽發SSL證書,https是SSL證書的一種表現形式

https訪問過程

  技術分享

自簽名證書制作(自己做CA)

目標:

server使用的文件有:ca.crt,server.crt,server.key

名詞:

證書格式:

證書格式轉換:http://blog.csdn.net/adeyi/article/details/8299473

PEM格式:Base64編碼的ASCII文件;通常存儲服務器認證證書、中級認證證書和私鑰;應用:APACHE和類似服務器;擴展名為.pem, .crt, .cer, .key

DER格式:二進制編碼的ASCII文件;可以存儲所有的證書和私鑰;應用:JAVA;擴展名為.der,也有.cer, .crt

PKSC#7/P7B格式:base64格式;存儲認證證書或證書鏈中的證書,不能存儲私鑰;應用:Windows和tomcat都支持;擴展名.p7b, .p7c, .spc

PKS#12/PFX格式:加密的二進制格式;存儲服務器認證證書、中級認證證書和私鑰;應用:Windows中導入導出認證證書和私鑰;擴展名:.pfx, .p12

CSR:Certificate Signing Request

1. 制作CA

1.1. 為CA創建RSA私鑰(des3加密並且是PEM格式)

openssl genrsa -des3 -out ca.key 1024

des3--加密算法

過程中會提示輸入密碼,通過des3加密算法使用輸入的密碼加密ca.key文件

附:

查看私鑰的詳細信息:openssl rsa -noout -text -in ca.key

去除私鑰的口令:openssl rsa -in server.key -out ca.key

1.2. 為CA創建一個自簽名的證書(x509結構,輸出為PEM格式)

openssl req -new -x509 -days 365 -key ca.key -out ca.crt

x509--結構

附:

查看證書信息:openssl x509 -noout -text -in ca.crt

2. 自建server證書

2.1 生成server私鑰

openssl genrsa -des3 -out server.key 1024

2.2 生成server證書請求

openssl req -new -key server.key -out server.csr

2.3 使用CA簽名server證書

openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -out servercert.crt

簽證完成後,會把證書請求響應和CA根證書一起返回給請求者,即server端

2.4 server端有另一服務器通過代碼訪問https,需使用keytool將根證書(鏈)及證書請求響應導入到java的cacerts庫中

keytool -import -alias isupcert -trustcacerts -file servercert.crt -keystore $JAVA_HOME/jre/lib/security/cacerts

附:

查看已有的證書:keytool -list -keystore cacerts -alias isupcert

刪除某證書keytool -delete -alias isupcert -keystore cacerts

3.client信任安全證書

一般添加到瀏覽器的信任白名單即可使用。

但在有的操作系統中,還需要將根證書配置為系統級的證書,才允許繼續使用。

    Mac OS X
       添加證書:
         sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/new-root-certificate.crt
       移除證書:
         sudo security delete-certificate -c ""

    Windows
       添加證書:
         certutil -addstore -f "ROOT" new-root-certificate.crt
       移除證書:
         certutil -delstore "ROOT" serial-number-hex

    Linux (Ubuntu, Debian)
       添加證書:
         1.復制 CA 文件到目錄: /usr/local/share/ca-certificates/
         2.執行: sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt
         3.更新 CA 證書庫: sudo update-ca-certificates
       移除證書:
         1.Remove your CA.
         2.Update the CA store:
           sudo update-ca-certificates --fresh
      Restart Kerio Connect to reload the certificates in the 32-bit versions or Debian 7.

    Linux (CentOs 6)
       添加證書:
         1.安裝 ca-certificates package: yum install ca-certificates
         2.啟用dynamic CA configuration feature: update-ca-trust force-enable
         3.Add it as a new file to /etc/pki/ca-trust/source/anchors/: cp foo.crt /etc/pki/ca-trust/source/anchors/
         4.執行: update-ca-trust extract
      Restart Kerio Connect to reload the certificates in the 32-bit version.

    Linux (CentOs 5)
       添加證書:
         Append your trusted certificate to file /etc/pki/tls/certs/ca-bundle.crt: cat foo.crt >> /etc/pki/tls/certs/ca-bundle.crt

參考:

  如何添加自定義CA根證書到操作系統獲得信任

    https://www.qiansw.com/add-the-ca-root-certificate-to-the-operating-system-for-trust.html

  SSLCA

    http://blog.csdn.net/lzs109/article/details/6960461

HTTPS相關知識