標籤:socket port 資料完整性 作用 usr 副檔名 .com lis 用戶端
概念HTTP(HyperText Transfer Protocol超文字傳輸通訊協定 (HTTP))
以明文方式發送內容,不提供任何方式的資料加密,是一個用戶端和伺服器端請求和應答的標準(TCP),用於從WWW伺服器傳輸超文本到本地瀏覽器的傳輸協議
HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer基於安全通訊端的超文字傳輸通訊協定 (HTTP))
是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 orDebian 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
SSL與CA
http://blog.csdn.net/lzs109/article/details/6960461
HTTPS相關知識