HTTPS:java
HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全爲目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,所以加密的詳細內容就須要SSL。 它是一個URI scheme(抽象標識符體系),句法類同http:體系。用於安全的HTTP數據傳輸。https:URL代表它使用了HTTP,但HTTPS存在不一樣於HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司(Netscape)進行,並內置於其瀏覽器Netscape Navigator中,提供了身份驗證與加密通信方法。如今它被普遍用於萬維網上安全敏感的通信,例如交易支付方面。算法
SSL:瀏覽器
SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是爲網絡通訊提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層對網絡鏈接進行加密。安全
TLS:服務器
安全傳輸層協議(TLS)用於在兩個通訊應用程序之間提供保密性和數據完整性。網絡
該協議由兩層組成: TLS 記錄協議(TLS Record)和 TLS 握手協議(TLS Handshake)。ide
PKI:工具
PKI是Public Key Infrastructure的首字母縮寫,翻譯過來就是公鑰基礎設施;PKI是一種遵循標準的利用公鑰加密技術爲電子商務的開展提供一套安全基礎平臺的技術和規範。ui
X.509編碼
X.509是被普遍使用的數字證書標準,是由國際電聯電信委員會(ITU-T)爲單點登陸(SSO-Single Sign-on)和受權管理基礎設施(PMI-Privilege Management Infrastructure)制定的PKI標準。
編碼格式
一樣的X.509證書,可能有不一樣的編碼格式,目前有如下兩種編碼格式.
PEM - Privacy Enhanced Mail,打開看文本格式,以"-----BEGIN..."開頭, "-----END..."結尾,內容是BASE64編碼.Apache和*NIX服務器偏向於使用這種編碼格式
DER - Distinguished Encoding Rules,打開看是二進制格式,不可讀.Java和Windows服務器偏向於使用這種編碼格式
PEM就是在DER的基礎上,文件內容多了開頭和結尾標誌段,而且以BASE64編碼
PKCS:
全稱是 The Public-Key Cryptography Standards (PKCS),是由美國RSA數據安全公司及其合做夥伴制定的一組公鑰密碼學標準,其中包括證書申請、證書更新、證書做廢表發佈、擴展證書內容以及數字簽名、數字信封的格式等方面的一系列相關協議。
到1999年末,PKCS已經公佈瞭如下標準:
PKCS#1:定義RSA公開密鑰算法加密和簽名機制,主要用於組織PKCS#7中所描述的數字簽名和數字信封。
PKCS#3:定義Diffie-Hellman密鑰交換協議。
PKCS#5:描述一種利用從口令派生出來的安全密鑰加密字符串的方法。使用MD2或MD5 從口令中派生密鑰,並採用DES-CBC模式加密。主要用於加密從一個計算機傳送到另外一個計算機的私人密鑰,不能用於加密消息。
PKCS#6:描述了公鑰證書的標準語法,主要描述X.509證書的擴展格式。
PKCS#7:定義一種通用的消息語法,包括數字簽名和加密等用於加強的加密機制,PKCS#7與PEM兼容,因此不需其餘密碼操做,就能夠將加密的消息轉換成PEM消息。
PKCS#8:描述私有密鑰信息格式,該信息包括公開密鑰算法的私有密鑰以及可選的屬性集等。
PKCS#9:定義一些用於PKCS#6證書擴展、PKCS#7數字簽名和PKCS#8私鑰加密信息的屬性類型。
PKCS#10:描述證書請求語法。
PKCS#11:稱爲Cyptoki,定義了一套獨立於技術的程序設計接口,用於智能卡和PCMCIA卡之類的加密設備。
PKCS#12:描述我的信息交換語法標準。描述了將用戶公鑰、私鑰、證書和其餘相關信息打包的語法。
PKCS#13:橢圓曲線密碼體制標準。
PKCS#14:僞隨機數生成標準。
PKCS#15:密碼令牌信息格式標準。
經常使用的有:PKCS#七、PKCS#十、PKCS#12
後綴:
PKCS#7 經常使用的後綴是: .P7B .P7C .SPC
PKCS#12 經常使用的後綴有: .P12 .PFX
X.509 DER 編碼(ASCII)的後綴是: .DER .CER .CRT
X.509 PEM 編碼(Base64)的後綴是: .PEM .CER .CRT
CRT文件和CER文件只有在使用相同編碼的時候才能夠安全地相互替代。
.cer/.crt是用於存放證書,它是2進制形式存放的,不含私鑰。
.pem跟crt/cer的區別是它以Ascii來表示。
pfx/p12用於存放我的證書/私鑰,他一般包含保護密碼,2進制方式
p10是證書請求
p7r是CA對證書請求的回覆,只用於導入
p7b以樹狀展現證書鏈(certificate chain),同時也支持單個證書,不含私鑰。
密鑰庫文件格式【Keystore】
格式 : JKS
擴展名 : .jks/.ks
描述 : 【Java Keystore】密鑰庫的Java實現版本,provider爲SUN
特色 : 密鑰庫和私鑰用不一樣的密碼進行保護
格式 : JCEKS
擴展名 : .jce
描述 : 【JCE Keystore】密鑰庫的JCE實現版本,provider爲SUN JCE
特色 : 相對於JKS安全級別更高,保護Keystore私鑰時採用TripleDES
格式 : PKCS12
擴展名 : .p12/.pfx
描述 : 【PKCS #12】我的信息交換語法標準
特色 : 一、包含私鑰、公鑰及其證書
: 二、密鑰庫和私鑰用相同密碼進行保護
格式 : BKS
擴展名 : .bks
描述 : 【Bouncycastle Keystore】密鑰庫的BC實現版本,provider爲BC
特色 : 基於JCE實現
格式 : UBER
擴展名 : .ubr
描述 : 【Bouncycastle UBER Keystore】密鑰庫的BC更安全實現版本,provider爲BC
證書文件格式【Certificate】
格式 : DER
擴展名 : .cer/.crt/.rsa
描述 : 【ASN .1 DER】用於存放證書
特色 : 不含私鑰、二進制
格式 : PKCS7
擴展名 : .p7b/.p7r
描述 : 【PKCS #7】加密信息語法標準
特色 : 一、p7b以樹狀展現證書鏈,不含私鑰
: 二、p7r爲CA對證書請求籤名的回覆,只能用於導入
格式 : CMS
擴展名 : .p7c/.p7m/.p7s
描述 : 【Cryptographic Message Syntax】
特色 : 一、p7c只保存證書
: 二、p7m:signature with enveloped data
: 三、p7s:時間戳簽名文件
格式 : PEM
擴展名 : .pem
描述 : 【Printable Encoded Message】
特色 : 一、該編碼格式在RFC1421中定義,其實PEM是【Privacy-Enhanced Mail】的簡寫,但他也一樣普遍運用於密鑰管理
: 二、ASCII文件
: 三、通常基於base 64編碼
: 4. Apache 用到的CA證書鏈就是PEM格式,它實際上可保存普通多個X509證書(.cer), 將每一個證書簡單加在一塊兒就能夠了
格式 : PKCS10
擴展名 : .p10/.csr
描述 : 【PKCS #10】公鑰加密標準【Certificate Signing Request】
特色 : 一、證書籤名請求文件
: 二、ASCII文件
: 三、CA簽名後以p7r文件回覆
格式 : SPC
擴展名 : .pvk/.spc
描述 : 【Software Publishing Certificate】
特色 : 微軟公司特有的雙證書文件格式,常常用於代碼簽名,其中
: 一、pvk用於保存私鑰
: 二、spc用於保存公鑰
注:1.java keytool工具默認爲DER編碼格式,可以使用-rfc參數變成PEM編碼格式
2.彷佛你們都是使用.crt表示PEM證書,.cer表示DER證書,使用opensll導出私鑰時,用.key後綴,而不是.pem