『壹』 如何用已有的證書文件和私鑰文件生成keystore
首先不能使用java的類庫.除非你使用了JNI但是與其這樣,不如直接使用JAVA第二訪問https可以使用OpenSSL,keystore文件中的證書只是個密鑰.提取出來後完全可以用一般的SSL方式進行post或者get連接代碼互聯網上有的是
『貳』 keystore怎麼生成證書和密鑰
步驟:
1.生成server端密鑰
[html] view plain
1. keytool -genkey -alias serverkey -keystore key OfServer.keystore
之後會出現如下信息,(第一次輸入密碼:打開keystore文件密碼,第二次密碼為秘鑰,一般兩次密碼相同)
根據私鑰導出服務端證書(將把證書庫 monitor.keystore中的別名為 serverkey的證書導出到KeyOfServer.cer證書文件中,它包含證書主體的信息及證書的公鑰,不包括私鑰,可以公開。)
[html] view plain
1. keytool -export -alias serverkey -keystore keyOfServer.keystore -file server.crt
將服務端證書,加入客戶端的認證證書列表中(只包含公鑰)
[html] view plain
1.keytool -import -alias serverkey -file server.crt -keystore trustOfClient.keystore
2:生成client端密鑰
[html] view plain
1. keytool -genkey -alias clientkey -keystore keyOfClient.keystore <span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>
根據私鑰導出客戶端證書
[html] view plain
1. keytool -export -alias clientkey -keystore keyOfClient.keystore -file client.crt
將證書加到服務端信任列表
[html] view plain
1. keytool -import -alias serverkey -file client.crt -keystore trustOfServer.keystore
至此,客戶端和伺服器端的證書都已經生成了
『叄』 如何用已有的證書文件和私鑰文件生成keystore-CSDN論壇
(1)公私鑰
使用Openssl公鑰私鑰用於外部商戶系統xxx系統間報文安全性驗證使用者需要公私鑰直接報文進行處理則參考第四部計算摘要及簽名值
1. 安裝openssl步驟直接點擊exe文件現需要安裝vs2008插件直接忽略
2. 安裝程找OpenSSL相應安裝目錄進入bin目錄找openssl.exe執行文件點擊運行別按順序輸入命令:
a. genrsa –out private-rsa.key 1024
說明:該命令沒加密私鑰
genrsa 私鑰文件私鑰存儲private-rsa.key度1024out面指定輸文件名
private-rsa.key 私鑰文件該文件必須經處理私鑰
b. req –new –x509 –key private-rsa.key –days 750 –outpublic-rsa.cer
說明:根據private-rsa.key證書public-rsa.cer
-new 表示新請求
-509 表示輸證書結構
750表示證書效數
-out public-rsa.cer -out面表示公鑰證書用於驗證數字簽名公鑰證書或者公鑰需要提前發送給需要驗證本單位或部門數據接收
c. pkcs12 –export –name test-alias –in public-rsa.cer–inkey private-rsa.key –out 99bill-rsa.pfx
說明:PKCS12 格式Keystore
密碼前輸入要緻密碼用Keystore公私鑰程用
Public-rsa.cer, private-rsa.key前
附1:
述代碼99bill-rsa.pfx獲取私鑰Java版本代碼private-rsa.key私鑰直接使用必須進行定處理
代碼幾注意點:
文件流初始化路徑需要根據自實際路徑填寫
密碼第二節c步驟密碼本實例輸入suning
KeyStorekeyStore = KeyStore.getInstance("PKCS12");
= newFileInputStream("D:/OpenSSL/bin/99bill-rsa.pfx");
char[]nPassword = "suning".toCharArray();
StringkeyAlias = null;
keyStore.load(fileInputStream,nPassword);
fileInputStream.close();
System.out.println("keystoretype=" + keyStore.getType());
Enumerationenumeration = keyStore.aliases();
if(enumeration.hasMoreElements())
{
keyAlias = (String) enumeration.nextElement();
System.out.println("alias=[" + keyAlias +"]");
}
System.out.println("iskey entry=" + keyStore.isKeyEntry(keyAlias));
PrivateKeyprikey = (PrivateKey) keyStore.getKey(keyAlias, nPassword);
//私鑰轉字元串
StringprivateStr = Base64.encodeBase64String(prikey.getEncoded()).trim();
//公鑰字元串通cer證書
Certificatecert = keyStore.getCertificate(keyAlias);
PublicKeypubkey = cert.getPublicKey();
StringpublicStr = Base64.encodeBase64String(pubKey.getEncoded()).trim();
注意:
1. 所用類說明:
Base64:
import org.apache.commons.net.util.Base64;
Certificate:
import java.security.cert.Certificate;
2. openssl公私鑰程用戶輸入密碼本例密碼suning
1. 摘要及
摘要程(digest全部實現述3程):
1. 根據key傳map數據排序;
2. a1=b1&a2=b2&a3=b3形式字元串排除某些字元串Key值;
3. 調用digest進行md5編碼;
三步均通Digest.digest()實現:
String digest = Digest.digest(Map map, String... keys);
傳遞http報文體body內容a1=b1&a2=b2&a3=b3形式字元串提取需要加簽字元串並轉map形式execludeKes要排除欄位字元串數組
計算摘要步關鍵選取欄位要求發送接收必須致即發送哪些欄位計算摘要同接收必須相同欄位計算摘要否則報6601錯誤
說明:a. Map存儲計算摘要欄位
b. keys表示排除欄位能用於計算摘要欄位signature,signAlgorithm
2. 公鑰證書及字元串轉換
轉換目:便於存儲(商戶直接提供公鑰證書於向驗簽系統提供公鑰字元串商戶需要用述代碼公鑰轉字元串)
1. 公鑰/私鑰字元串轉公鑰/私鑰主要字元串轉公鑰PublicKey
X509EncodedKeySpec pubKeySpec = newX509EncodedKeySpec(Base64.decodeBase64(strPubKey));
KeyFactorykeyFactory = KeyFactory.getInstance(RSA);
PublicKeypubKey = keyFactory.generatePublic(pubKeySpec);
2. 公鑰或私鑰轉Base64字元串:
StringpublicStr = Base64.encodeBase64String(pubKey.getEncoded()).trim();
3. 公私鑰驗證
驗證目:公私鑰需要驗證否匹配(前許商戶公私鑰混亂確定公私鑰否匹配添加驗簽系統)代碼由用戶自用junit驗證運行驗證公私鑰否確resulttrue則說明公私鑰確;否則公私鑰問題能使用
String prik1 ="";
String pubb ="";
String data ="wkk";
String digest =Digest.digest(data);
PrivateKey privateKey =RSAUtil.getPrivateKey(prik1);
String sign =RSAUtil.sign(digest, privateKey);
boolean result =RSAUtil.vertiy(digest, sign,
RSAUtil.getPublicKey(pubb));
System.out.println(result);
『肆』 怎樣根據已有的公鑰和私鑰生成數字證書
openssl genrsa -des3 -out server.key 1024
運行時來會提示輸入密碼,此密碼用源於加密key文件(參數des3便是指加密演算法,當然也可以選用其他你認為安全的演算法.),以後每當需讀取此文件(通過openssl提供的命令或API)都需輸入口令.如果覺得不方便,也可以去除這個口令,但一定要採取其他的保護措施!
去除key文件口令的命令:
openssl rsa -in server.key -out server.key!
『伍』 java使用keytool生成證書的時候怎們樣設置公鑰和私鑰還有keystore密碼是什麼
1.私鑰公鑰不是用戶自己輸入的,是RSA演算法自動生成的,而你輸入的密碼只是打開那個文件或生成的證書的密碼.
2.密碼為「changeit」,而如果嘗試幾次都不成功的話,就到$JAVA_HOME\jre\lib\security\目錄下去配就可以了
『陸』 如何生成CA證書
創建根證書密鑰文件(自己做CA)root.key:
創建根證書的申請文件root.csr:
創建一個自當前日期起為期十年的根證書root.crt:
創建伺服器證書密鑰server.key:
創建伺服器證書的申請文件server.csr
創建自當前日期起有效期為期兩年的伺服器證書server.crt
創建客戶端證書密鑰文件client.key
創建客戶端證書的申請文件client.csr
創建一個自當前日期起有效期為兩年的客戶端證書client.crt
將客戶端證書文件client.crt和客戶端證書密鑰文件client.key合並成客戶端證書安裝包client.pfx
保存生成的文件備用,其中server.crt和server.key是配置單向SSL時需要使用的證書文件,client.crt是配置雙向SSL時需要使用的證書文件,client.pfx是配置雙向SSL時需要客戶端安裝的證書文件 .crt文件和.key可以合到一個文件裡面,把2個文件合成了一個.pem文件(直接拷貝過去就行了)
『柒』 SSL中,公鑰,私鑰,證書的後綴名都是些啥
SSL證書後綴
CSR – Certificate Signing Request,即證書簽名請求,這個並不是證書,而是向權威證書頒發機構獲得簽名證書的申請,其核心內容是一個公鑰(當然還附帶了一些別的信息),在生成這個申請的時候,同時也會生成一個私鑰,私鑰要自己保管好.做過iOS APP的朋友都應該知道是怎麼向蘋果申請開發者證書的吧.
KEY– 通常用來存放一個RSA 公鑰或者私鑰,並非X.509證書,編碼同樣的,可能是PEM,也可能是DER.
CRT– CRT應該是certificate的三個字母,其實還是證書的意思,常見於*NIX系統,有可能是PEM編碼,也有可能是DER編碼,大多數應該是PEM編碼。本站提供的CRT格式等同於CER,等同於PEM。
PEM – Privacy Enhanced Mail的縮寫,以文本的方式進行存儲。打開看文本格式,以」—–BEGIN…」開頭, 「—–END…」結尾,內容是編碼. 查看PEM格式證書的信息:openssl x509 -in certificate.pem -text -noout Apache和*NIX伺服器偏向於使用這種編碼格式.
CER– 還是certificate,還是證書,常見於Windows系統,同樣的,可能是PEM編碼,也可能是DER編碼,大多數應該是DER編碼.
DER – Distinguished Encoding Rules的縮寫,以二進制方式進行存儲,文件結構無法直接預覽,查看DER格式證書的信息:openssl x509 -in certificate.der -inform der -text -noout Java和Windows伺服器偏向於使用這種編碼格式.
PFX/P12 – predecessor of PKCS#12,對*nix伺服器來說,一般CRT和KEY是分開存放在不同文件中的,但Windows的IIS則將它們存在一個PFX文件中,(因此這個文件包含了證書及私鑰)這樣會不會不安全?應該不會,PFX通常會有一個」提取密碼」,你想把裡面的東西讀取出來的話,它就要求你提供提取密碼,PFX使用的時DER編碼,如何把PFX轉換為PEM編碼?
JKS – 即Java Key Storage,這是Java的專利,跟OpenSSL關系不大,利用Java的一個叫」keytool」的工具,可以將PFX轉為JKS,當然了,keytool也能直接生成JKS。
『捌』 如何生成openssl證書
2. 生成Root CA私鑰與證書:
2.1 先生成RootCA私鑰--》使用私鑰生成CSR--》生成自簽名根證書。用來給二級CA證書簽名。
3. 生成二級CA 私鑰與證書:(假如有兩個二級CA, 分別負責管理伺服器端和客戶端證書)
3.1 先生成ServerCA私鑰--》使用私鑰生成CSR--》使用根證書簽名生成二級證書。用來給伺服器證書簽名。
3.2 先生成ClientCA私鑰--》使用私鑰生成CSR--》使用根證書簽名生成二級證書。用來給客戶端證書簽名。
4. 生成伺服器端與客戶端的私鑰與證書:
4.1 先生成ServerA私鑰--》使用私鑰生成CSR--》使用ServerCA證書簽名生成三級證書。
4.2 先生成ClientA私鑰--》使用私鑰生成CSR--》使用ClientCA證書簽名生成三級證書。
4.3 先生成ClientB私鑰--》使用私鑰生成CSR--》使用ClientCA證書簽名生成三級證書
。。。。可以生成N個客戶端證書證書結構:RootCA||-------ServerCA| || |--------ServerA||-------ClientCA||--------ClientA||--------ClientB||--------...|
5. 導出RootCA的根證書、伺服器端和客戶端的私鑰和證書。
導出時都使用pem格式。
RootCA.pem-------根證書(PEM )
ServerA.pem------伺服器端證書(PEM with Certificate chain)
ClientA.pem------客戶端證書(PEM with Certificate chain)
ClientB.pem------客戶端證書(PEM with Certificate chain)
ServerAKey.pem------伺服器端私鑰(PEM )
ClientAKey.pem------客戶端私鑰(PEM )
ClientBKey.pem------客戶端私鑰(PEM )
6.下面是最重要的一步:生成需要使用的JKS文件。keytool工具不能導入私鑰,需要利用到weblogic 提供的一個工具,需要把weblogic.jar加到CLASSPATH。
6.1 生成伺服器和客戶端的信任證書庫:
keytool -import -alias rootca -file RootCA.pem -keystore trust.jks
6.2 生成伺服器端身份密鑰庫:
java utils.ImportPrivateKey -keystore servera.jks -storepass 123456 -storetype JKS -keypass 123456 -alias servera -certfile ServerA.pem -keyfile ServerAKey.pem
6.3 生成客戶端身份密鑰庫:
java utils.ImportPrivateKey -keystore clienta.jks -storepass 123456 -storetype JKS -keypass 123456 -alias clienta -certfile ClientA.pem -keyfile ClientAKey.pem ...生成其他客戶端身份密鑰庫
7. keytool -list -v -keystore clienta.jks (servera.jks) 可以查看其中的證書鏈關系。
『玖』 我已經有一個SSL證書,但是私鑰怎麼生成啊求指教
您好!
SSL證書與私鑰是相互匹配的,如果您只有SSL證書卻沒有私鑰內的話,請您重新申請容SSL證書。生成CSR文件同時會生成密鑰KEY文件(私鑰生成可以直接「CSR文件生成」各大搜索引擎都可以找到工具)!非常重要,請把生成好的CSR文件和KEY文件下載到電腦妥善保存,CSR和KEY文件隨機生成,如果丟失無法找回,只能重新發出申請請求。
概述:當申請者申請SSL證書時,生成了CSR文件同時生成KEY私鑰文件。申請者將CSR文件提交至CA機構SSL證書頒發機構,從而就生成了SSL證書公鑰文件。如果實在不行也可以找到Gworg申請SSL證書,會將這些文檔整個提供。
簡述申請SSL證書流程:
一、CSR請求文件生成(文件包括:私鑰KEY與CSR文件)
二、提供CSR文件給SSL證書頒發機構
三、按照固定認證完畢後,獲得SSL證書