【產(chǎn)品技術(shù)】密鑰小課堂:打造自己的數(shù)字簽名
公鑰和私鑰就是俗稱的不對稱加密方式。公鑰(Public Key)與私鑰(Private Key)是通過一種算法得到的一個密鑰對(即一個公鑰和一個私鑰),公鑰是密鑰對中公開的部分,私鑰則是非公開的部分。公鑰通常用于加密會話密鑰、驗證數(shù)字簽名,或加密可以用相應(yīng)的私鑰解密的數(shù)據(jù)。
通過這種算法得到的密鑰對能保證在世界范圍內(nèi)是唯一的。使用這個密鑰對的時候,如果用其中一個密鑰加密一段數(shù)據(jù),則必須用另一個密鑰才能解密。比如用公鑰加密的數(shù)據(jù)就必須用私鑰才能解密,如果用私鑰進行加密也必須用公鑰才能解密,否則將無法成功解密。
由于私鑰的非公開屬性,建議在證書申請過程中,由客戶自己生成私鑰,并妥善保管,避免因私鑰丟失導(dǎo)致網(wǎng)站信息泄露等惡性事件的發(fā)生。
數(shù)字證書采用公鑰體制,即利用一對互相匹配的密鑰對進行加密、解密。每個用戶自己設(shè)定一把特定的僅為本人所知的私有密鑰(私鑰),用它進行解密和簽名;同時設(shè)定一把公共密鑰(公鑰)并由本人公開,為一組用戶所共享,用于加密和驗證簽名。
由于密鑰僅為本人所有,這樣就產(chǎn)生了別人無法生成的文件,也就形成了數(shù)字簽名。
數(shù)字證書是一個經(jīng)證書授權(quán)中心(CA)數(shù)字簽名的包含公開密鑰擁有者信息以及公開密鑰的文件。最簡單的證書包含一個公開密鑰、名稱以及證書授權(quán)中心的數(shù)字簽名。數(shù)字證書還有一個重要的特征就是只在特定的時間段內(nèi)有效。
私有密鑰的加密算法和長度有如下要求:
·?????? 加密算法使用RSA算法
·?????? 加密長度至少2048位
建議使用2048位加密長度的SHA256摘要算法。
可以通過以下兩種方式創(chuàng)建您的私鑰:
·?????? 使用OpenSSL工具生成私鑰
OpenSSL是一個強大且應(yīng)用廣泛的安全基礎(chǔ)庫工具,可以從“http://www.openssl.org/source/”下載最新的OpenSSL工具安裝包。
要求OpenSSL版本必須是1.0.1g或以上版本。
安裝OpenSSL工具后,在命令行模式下運行openssl genrsa -out myprivate.pem 2048即可生成私鑰文件。
o?? “myprivate.pem”私鑰文件。
o?? “2048”指定加密長度。
·?????? 使用Keytool工具導(dǎo)出私鑰
Keytool工具是JDK中自帶的密鑰管理工具,可以制作Keystore(jks)格式的證書文件,可以從“http://www.oracle.com/technetwork/java/javase/downloads/index.html”下載JDK工具包來獲取Keytool工具。
由于使用Keytool工具制作的公鑰和私鑰默認是不可以導(dǎo)出的,需要從已經(jīng)創(chuàng)建好的“.keystore”文件中導(dǎo)出私鑰。
在導(dǎo)出的文件中,以下部分的內(nèi)容即是私鑰:
-----BEGIN RSA PRIVATE KEY-----
......
-----END RSA PRIVATE KEY-----
或者
-----BEGIN PRIVATE KEY-----
......
-----END PRIVATE KEY-----
附注 無論通過哪種方式生成密鑰,我們都需完善地保管好私鑰文件,注意私鑰文件一旦丟失或者損壞,申請的對應(yīng)的公鑰、及證書都將無法使用。
通用安全
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。