×

如何生成ssl證書key

分類:建站推廣 編輯: 瀏覽量:100
2021-07-14 15:06:47
??什么是keystore?是java的密鑰庫、用來進(jìn)行通信加密用的、比如數(shù)字簽名。keystore就是用來保存密鑰對的,比如公鑰和私鑰。key生成:首先生成證書需要csr文件,csr文件就是證書生成文件,里面包含的域名所有人或公司的信息,用csr去向CA申請簽發(fā)域名證書。生成csr的同時,會自動生成一個key文件,CA批準(zhǔn)簽發(fā)證書后,服務(wù)器或面板需要證書文件和key文件一起使用。下面就由新網(wǎng)小編和大家講一講如何生成ssl證書key。

??一、將CSR提交到證書服務(wù)商

??CSR(Certificate Signing Request)文件必須由用戶自己生成,也可以利用在線CSR生成工具。選擇要申請的產(chǎn)品,提交一個新的訂單,并將制作好的CSR文件提交。

??二、資料提交到CA

??當(dāng)收到您的訂單和CSR后,如果是域名驗證型證書(DV SSL證書),在域名驗證之后10分鐘左右就可頒發(fā)證書,若是其他類型證書則是需要通過CA機(jī)構(gòu)進(jìn)行驗證之后才可頒發(fā)。

??三、發(fā)送驗證郵件到管理員郵箱

??權(quán)威CA機(jī)構(gòu)獲得資料后,將發(fā)送一封確認(rèn)信到管理員郵箱,信中將包含一個 對應(yīng)的鏈接過去。每一個訂單,都有一個唯一的PIN以做驗證用。

??四、郵件驗證

??點(diǎn)擊確認(rèn)信中的鏈接,可以訪問到CA機(jī)構(gòu)驗證網(wǎng)站,在驗證網(wǎng)站,可以看到該訂單的申請資料,然后點(diǎn)擊”I Approve”完成郵件驗證。

??五、頒發(fā)證書

??在用戶完成郵件驗證之后,CA機(jī)構(gòu)會將證書通過郵件方式發(fā)送到申請人自己的郵箱,當(dāng)用戶收到證書后直接安裝就可以了。若安裝存在問題,安信證書是提供免費(fèi)證書安裝服務(wù)的。

??六、JDK中keytool常用命令

??-genkey 在用戶主目錄中創(chuàng)建一個默認(rèn)文件”.keystore”,還會產(chǎn)生一個mykey的別名,mykey中包含用戶的公鑰、私鑰和證書

??(在沒有指定生成位置的情況下,keystore會存在用戶系統(tǒng)默認(rèn)目錄,如:對于window xp系統(tǒng),會生成在系統(tǒng)的C:\Documents and Settings\UserName\文件名為“.keystore”)

??-alias 產(chǎn)生別名

??-keystore 指定密鑰庫的名稱(產(chǎn)生的各類信息將不在.keystore文件中)

??-keyalg 指定密鑰的算法 (如 RSA DSA(如果不指定默認(rèn)采用DSA))

??-validity 指定創(chuàng)建的證書有效期多少天

??-keysize 指定密鑰長度

??-storepass 指定密鑰庫的密碼(獲取keystore信息所需的密碼)

??-keypass 指定別名條目的密碼(私鑰的密碼)

??-dname 指定證書擁有者信息 例如: “CN=名字與姓氏,OU=組織單位名稱,O=組織名稱,L=城市或區(qū)域名稱,ST=州或省份名稱,C=單位的兩字母國家代碼”

??-list 顯示密鑰庫中的證書信息 keytool -list -v -keystore 指定keystore -storepass 密碼

??-v 顯示密鑰庫中的證書詳細(xì)信息

??-export 將別名指定的證書導(dǎo)出到文件 keytool -export -alias 需要導(dǎo)出的別名 -keystore 指定keystore -file 指定導(dǎo)出的證書位置及證書名稱 -storepass 密碼

??-file 參數(shù)指定導(dǎo)出到文件的文件名

??-delete 刪除密鑰庫中某條目 keytool -delete -alias 指定需刪除的別 -keystore 指定keystore -storepass 密碼

??-printcert 查看導(dǎo)出的證書信息 keytool -printcert -file yushan.crt

??-keypasswd 修改密鑰庫中指定條目口令 keytool -keypasswd -alias 需修改的別名 -keypass 舊密碼 -new 新密碼 -storepass keystore密碼 -keystore sage

??-storepasswd 修改keystore口令 keytool -storepasswd -keystore e:\yushan.keystore(需修改口令的keystore) -storepass 123456(原始密碼) -new yushan(新密碼)

??-import 將已簽名數(shù)字證書導(dǎo)入密鑰庫 keytool -import -alias 指定導(dǎo)入條目的別名 -keystore 指定keystore -file 需導(dǎo)入的證書

??七、生成keyStore

??RSA是一個既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。

??DSA(Digital Signature Algorithm,數(shù)字簽名算法,用作數(shù)字簽名標(biāo)準(zhǔn)的一部分),它是另一種公開密鑰算法,它不能用作加密,只用作數(shù)字簽名。DSA使用公開密鑰,為接受者驗證數(shù)據(jù)的完整性和數(shù)據(jù)發(fā)送者的身份。

??八、提取證書:

??通過keytool命令我們可以很輕松的提取證書.

??九、證書包括主體信息,公鑰

??keytool -export -alias 別名 -keystore 文件名 -file 證書名稱

??通過Java的KeyStore類getEntry() 或者getKey()來提取私鑰.

??十、讀取keyStore文件

??char[] password = “password”.toCharArray();

??java.io.FileInputStream fis = new java.io.FileInputStream(“c:/server/server_keystore”);

??// 從指定的輸入流中加載此 KeyStore

??ks.load(fis, password);

??//keystore 中的每一項都用“別名”字符串標(biāo)識。

??//使用指定保護(hù)參數(shù)獲取指定別名的 keystore Entry。

??//KeyStore.PrivateKeyEntry 保存 PrivateKey 和相應(yīng)證書鏈的 KeyStore 項。

??方法1. KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(“keystore別名”, new KeyStore.PasswordProtection(password));

??// 返回與給定別名相關(guān)聯(lián)的密鑰

??方法2. PrivateKey key = (PrivateKey) ks.getKey(“ser”, password);

??怎么來驗證提取的私鑰是否正確呢?(因為公鑰私鑰必須成對出現(xiàn),我們可以通過證書提取去公鑰,然后用公鑰加密,使用剛剛獲得的私鑰解密)

??十一、提取證書的方法

??keytool -export -alias 別名 -keystore 文件名 -file 證書名稱

??//通過證書,獲取公鑰

??CertificateFactory cf = CertificateFactory.getInstance(“X.509”);

??FileInputStream in = new FileInputStream(“C:\\server\\server.cer”);

??//生成一個證書對象并使用從輸入流 inStream 中讀取的數(shù)據(jù)對它進(jìn)行初始化。

??Certificate c = cf.generateCertificate(in);

??PublicKey publicKey = c.getPublicKey();

??//通過下面這段代碼提取的私鑰是否正確

??String before = “asdf”;

??byte[] plainText = before.getBytes(“UTF-8”);

??Cipher cipher = Cipher.getInstance(“RSA/ECB/PKCS1Padding”);

??cipher.init(Cipher.ENCRYPT_MODE, publicKey);

??// 用公鑰進(jìn)行加密,返回一個字節(jié)流

??byte[] cipherText = cipher.doFinal(plainText);

??cipher.init(Cipher.DECRYPT_MODE, myPrivateKey);

??// 用私鑰進(jìn)行解密,返回一個字節(jié)流

??byte[] newPlainText = cipher.doFinal(cipherText);

??System.out.println(new String(newPlainText, “UTF-8”));

??SSL證書是HTTP明文協(xié)議升級HTTPS加密協(xié)議的重要渠道,是網(wǎng)絡(luò)安全傳輸?shù)募用艿酵ǖ?。關(guān)于更多SSL證書的資訊,請關(guān)注GDCA(數(shù)安時代)。GDCA致力于網(wǎng)絡(luò)信息安全,已通過WebTrust 的國際認(rèn)證,是全球可信任的證書簽發(fā)機(jī)構(gòu)。GDCA專業(yè)技術(shù)團(tuán)隊將根據(jù)用戶具體情況為其提供最優(yōu)的產(chǎn)品選擇建議,并針對不同的應(yīng)用或服務(wù)器要求提供專業(yè)對應(yīng)的HTTPS解決方案。小伙伴們要想獲得更多ssl證書key的內(nèi)容,請關(guān)注新網(wǎng)!

聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)

送郵件至:operations@xinnet.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時

需注明出處:新網(wǎng)idc知識百科

免費(fèi)咨詢獲取折扣

Loading