什么是公鑰和私鑰?
公鑰(Public Key)與私鑰(Private Key)是通過加密算法得到的一個(gè)密鑰對(duì)(即一個(gè)公鑰和一個(gè)私鑰,也就是非對(duì)稱加密方式)。公鑰可對(duì)會(huì)話進(jìn)行加密、驗(yàn)證數(shù)字簽名,只有使用對(duì)應(yīng)的私鑰才能解密會(huì)話數(shù)據(jù),從而保證數(shù)據(jù)傳輸?shù)陌踩浴9€是密鑰對(duì)外公開的部分,私鑰則是非公開的部分,由用戶自行保管。
通過加密算法得到的密鑰對(duì)可以保證在世界范圍內(nèi)是唯一的。使用密鑰對(duì)的時(shí)候,如果用其中一個(gè)密鑰加密一段數(shù)據(jù),只能使用密鑰對(duì)中的另一個(gè)密鑰才能解密數(shù)據(jù)。例如:用公鑰加密的數(shù)據(jù)必須用對(duì)應(yīng)的私鑰才能解密;如果用私鑰進(jìn)行加密也必須使用對(duì)應(yīng)的公鑰才能解密,否則將無法成功解密。
SSL證書的原理
SSL證書采用公鑰體制,即利用一對(duì)互相匹配的密鑰對(duì)進(jìn)行數(shù)據(jù)加密和解密。每個(gè)用戶自己設(shè)定一把特定的、僅為本人所知的私有密鑰(私鑰),并用它進(jìn)行解密和簽名;同時(shí)設(shè)定一把公共密鑰(公鑰)并由本人公開,為一組用戶所共享,用于加密和驗(yàn)證簽名。
由于密鑰僅為本人所有,可以產(chǎn)生其他人無法生成的加密文件,也就是形成了數(shù)字簽名。
SSL證書是一個(gè)經(jīng)證書授權(quán)中心(CA)數(shù)字簽名的、包含公開密鑰擁有者信息以及公開密鑰的文件。最簡(jiǎn)單的證書包含一個(gè)公開密鑰、名稱以及證書授權(quán)中心的數(shù)字簽名。數(shù)字證書還有一個(gè)重要的特征就是只在特定的時(shí)間段內(nèi)有效。
有關(guān)私鑰原理的更多信息,請(qǐng)參見阿里云SSL證書私鑰保護(hù)原理是怎樣的?
創(chuàng)建私鑰
阿里云SSL證書服務(wù)對(duì)您私鑰的加密算法和長(zhǎng)度要求如下。
加密算法使用RSA算法
加密長(zhǎng)度至少2,048位
您可以通過以下兩種方式創(chuàng)建您的私鑰。
使用OpenSSL工具生成私鑰
您可以從 OpenSSL官網(wǎng)網(wǎng)站 下載最新的OpenSSL工具安裝包。
說明OpenSSL版本必須是1.0.1g或以上版本。
安裝OpenSSL工具后,在命令行模式下運(yùn)行
openssl genrsa -out myprivate.pem 2048
生成您的私鑰文件。生成后的私鑰文件名稱為myprivate.pem,加密長(zhǎng)度為2,048。
使用Keytool工具生成并導(dǎo)出私鑰
Keytool工具是JDK中自帶的密鑰管理工具,可以制作Keystore(jks)格式的證書文件,您可以從 官方地址 下載JDK工具包來獲取Keytool工具。
由于使用Keytool工具制作的公鑰和私鑰默認(rèn)是不可以導(dǎo)出的,您需要從已經(jīng)創(chuàng)建好的.keystore文件中導(dǎo)出私鑰。關(guān)于如何從.keystore文件中導(dǎo)出私鑰,請(qǐng)參見如何轉(zhuǎn)換證書格式?。
在導(dǎo)出的文件中,以下部分的內(nèi)容即是您的私鑰:
-----BEGIN RSA PRIVATE KEY----- ...... -----END RSA PRIVATE KEY-----
或者
-----BEGIN PRIVATE KEY----- ...... -----END PRIVATE KEY-----
說明無論您通過哪種方式生成密鑰,請(qǐng)您妥善地保管好您的私鑰文件。私鑰文件一旦丟失或者損壞,您申請(qǐng)的公鑰及數(shù)字證書將無法使用。