如何生成ssl證書(shū)key
??一、將CSR提交到證書(shū)服務(wù)商
??CSR(Certificate Signing Request)文件必須由用戶(hù)自己生成,也可以利用在線(xiàn)CSR生成工具。選擇要申請(qǐng)的產(chǎn)品,提交一個(gè)新的訂單,并將制作好的CSR文件提交。
??二、資料提交到CA
??當(dāng)收到您的訂單和CSR后,如果是域名驗(yàn)證型證書(shū)(DV SSL證書(shū)),在域名驗(yàn)證之后10分鐘左右就可頒發(fā)證書(shū),若是其他類(lèi)型證書(shū)則是需要通過(guò)CA機(jī)構(gòu)進(jìn)行驗(yàn)證之后才可頒發(fā)。
??三、發(fā)送驗(yàn)證郵件到管理員郵箱
??權(quán)威CA機(jī)構(gòu)獲得資料后,將發(fā)送一封確認(rèn)信到管理員郵箱,信中將包含一個(gè) 對(duì)應(yīng)的鏈接過(guò)去。每一個(gè)訂單,都有一個(gè)唯一的PIN以做驗(yàn)證用。
??四、郵件驗(yàn)證
??點(diǎn)擊確認(rèn)信中的鏈接,可以訪(fǎng)問(wèn)到CA機(jī)構(gòu)驗(yàn)證網(wǎng)站,在驗(yàn)證網(wǎng)站,可以看到該訂單的申請(qǐng)資料,然后點(diǎn)擊”I Approve”完成郵件驗(yàn)證。
??五、頒發(fā)證書(shū)
??在用戶(hù)完成郵件驗(yàn)證之后,CA機(jī)構(gòu)會(huì)將證書(shū)通過(guò)郵件方式發(fā)送到申請(qǐng)人自己的郵箱,當(dāng)用戶(hù)收到證書(shū)后直接安裝就可以了。若安裝存在問(wèn)題,安信證書(shū)是提供免費(fèi)證書(shū)安裝服務(wù)的。
??六、JDK中keytool常用命令
??-genkey 在用戶(hù)主目錄中創(chuàng)建一個(gè)默認(rèn)文件”.keystore”,還會(huì)產(chǎn)生一個(gè)mykey的別名,mykey中包含用戶(hù)的公鑰、私鑰和證書(shū)
??(在沒(méi)有指定生成位置的情況下,keystore會(huì)存在用戶(hù)系統(tǒng)默認(rèn)目錄,如:對(duì)于window xp系統(tǒng),會(huì)生成在系統(tǒng)的C:\Documents and Settings\UserName\文件名為“.keystore”)
??-alias 產(chǎn)生別名
??-keystore 指定密鑰庫(kù)的名稱(chēng)(產(chǎn)生的各類(lèi)信息將不在.keystore文件中)
??-keyalg 指定密鑰的算法 (如 RSA DSA(如果不指定默認(rèn)采用DSA))
??-validity 指定創(chuàng)建的證書(shū)有效期多少天
??-keysize 指定密鑰長(zhǎng)度
??-storepass 指定密鑰庫(kù)的密碼(獲取keystore信息所需的密碼)
??-keypass 指定別名條目的密碼(私鑰的密碼)
??-dname 指定證書(shū)擁有者信息 例如: “CN=名字與姓氏,OU=組織單位名稱(chēng),O=組織名稱(chēng),L=城市或區(qū)域名稱(chēng),ST=州或省份名稱(chēng),C=單位的兩字母國(guó)家代碼”
??-list 顯示密鑰庫(kù)中的證書(shū)信息 keytool -list -v -keystore 指定keystore -storepass 密碼
??-v 顯示密鑰庫(kù)中的證書(shū)詳細(xì)信息
??-export 將別名指定的證書(shū)導(dǎo)出到文件 keytool -export -alias 需要導(dǎo)出的別名 -keystore 指定keystore -file 指定導(dǎo)出的證書(shū)位置及證書(shū)名稱(chēng) -storepass 密碼
??-file 參數(shù)指定導(dǎo)出到文件的文件名
??-delete 刪除密鑰庫(kù)中某條目 keytool -delete -alias 指定需刪除的別 -keystore 指定keystore -storepass 密碼
??-printcert 查看導(dǎo)出的證書(shū)信息 keytool -printcert -file yushan.crt
??-keypasswd 修改密鑰庫(kù)中指定條目口令 keytool -keypasswd -alias 需修改的別名 -keypass 舊密碼 -new 新密碼 -storepass keystore密碼 -keystore sage
??-storepasswd 修改keystore口令 keytool -storepasswd -keystore e:\yushan.keystore(需修改口令的keystore) -storepass 123456(原始密碼) -new yushan(新密碼)
??-import 將已簽名數(shù)字證書(shū)導(dǎo)入密鑰庫(kù) keytool -import -alias 指定導(dǎo)入條目的別名 -keystore 指定keystore -file 需導(dǎo)入的證書(shū)
??七、生成keyStore
??RSA是一個(gè)既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。
??DSA(Digital Signature Algorithm,數(shù)字簽名算法,用作數(shù)字簽名標(biāo)準(zhǔn)的一部分),它是另一種公開(kāi)密鑰算法,它不能用作加密,只用作數(shù)字簽名。DSA使用公開(kāi)密鑰,為接受者驗(yàn)證數(shù)據(jù)的完整性和數(shù)據(jù)發(fā)送者的身份。
??八、提取證書(shū):
??通過(guò)keytool命令我們可以很輕松的提取證書(shū).
??九、證書(shū)包括主體信息,公鑰
??keytool -export -alias 別名 -keystore 文件名 -file 證書(shū)名稱(chēng)
??通過(guò)Java的KeyStore類(lèi)getEntry() 或者getKey()來(lái)提取私鑰.
??十、讀取keyStore文件
??char[] password = “password”.toCharArray();
??java.io.FileInputStream fis = new java.io.FileInputStream(“c:/server/server_keystore”);
??// 從指定的輸入流中加載此 KeyStore
??ks.load(fis, password);
??//keystore 中的每一項(xiàng)都用“別名”字符串標(biāo)識(shí)。
??//使用指定保護(hù)參數(shù)獲取指定別名的 keystore Entry。
??//KeyStore.PrivateKeyEntry 保存 PrivateKey 和相應(yīng)證書(shū)鏈的 KeyStore 項(xiàng)。
??方法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);
??怎么來(lái)驗(yàn)證提取的私鑰是否正確呢?(因?yàn)楣€私鑰必須成對(duì)出現(xiàn),我們可以通過(guò)證書(shū)提取去公鑰,然后用公鑰加密,使用剛剛獲得的私鑰解密)
??十一、提取證書(shū)的方法
??keytool -export -alias 別名 -keystore 文件名 -file 證書(shū)名稱(chēng)
??//通過(guò)證書(shū),獲取公鑰
??CertificateFactory cf = CertificateFactory.getInstance(“X.509”);
??FileInputStream in = new FileInputStream(“C:\\server\\server.cer”);
??//生成一個(gè)證書(shū)對(duì)象并使用從輸入流 inStream 中讀取的數(shù)據(jù)對(duì)它進(jìn)行初始化。
??Certificate c = cf.generateCertificate(in);
??PublicKey publicKey = c.getPublicKey();
??//通過(guò)下面這段代碼提取的私鑰是否正確
??String before = “asdf”;
??byte[] plainText = before.getBytes(“UTF-8”);
??Cipher cipher = Cipher.getInstance(“RSA/ECB/PKCS1Padding”);
??cipher.init(Cipher.ENCRYPT_MODE, publicKey);
??// 用公鑰進(jìn)行加密,返回一個(gè)字節(jié)流
??byte[] cipherText = cipher.doFinal(plainText);
??cipher.init(Cipher.DECRYPT_MODE, myPrivateKey);
??// 用私鑰進(jìn)行解密,返回一個(gè)字節(jié)流
??byte[] newPlainText = cipher.doFinal(cipherText);
??System.out.println(new String(newPlainText, “UTF-8”));
??SSL證書(shū)是HTTP明文協(xié)議升級(jí)HTTPS加密協(xié)議的重要渠道,是網(wǎng)絡(luò)安全傳輸?shù)募用艿酵ǖ?。關(guān)于更多SSL證書(shū)的資訊,請(qǐng)關(guān)注GDCA(數(shù)安時(shí)代)。GDCA致力于網(wǎng)絡(luò)信息安全,已通過(guò)WebTrust 的國(guó)際認(rèn)證,是全球可信任的證書(shū)簽發(fā)機(jī)構(gòu)。GDCA專(zhuān)業(yè)技術(shù)團(tuán)隊(duì)將根據(jù)用戶(hù)具體情況為其提供最優(yōu)的產(chǎn)品選擇建議,并針對(duì)不同的應(yīng)用或服務(wù)器要求提供專(zhuān)業(yè)對(duì)應(yīng)的HTTPS解決方案。小伙伴們要想獲得更多ssl證書(shū)key的內(nèi)容,請(qǐng)關(guān)注新網(wǎng)!
聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請(qǐng)發(fā)
送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)
需注明出處:新網(wǎng)idc知識(shí)百科