A. java jks證書怎麼轉換成php pem證書
1、P12格式的證書是不能使用keytool工具導入到keystore中的
2、The Sun's PKCS12 Keystore對從IE和其他的windows程序生成的pfx格式的證書支持不太好.
3、P7B證書鏈不能直接導入到keystore,需要將裡面的證書導出成cer格式,再分別導入到keystore。推薦樓主再有不會的去後盾網看看那裡關於php教學視頻很多。
B. java中怎麼獲取jks證書文件中的內容
JavaKeyStore的類型JKS和JCEKS是Java密鑰庫(KeyStore)的兩種比較常見類型(我所知道的共有5種,JKS,JCEKS,PKCS12,BKS,UBER)。JKS的Provider是SUN,在每個版本的JDK中都有,JCEKS的Provider是SUNJCE,1.4後我們都能夠直接使用它。JCEKS在安全級別上要比JKS強,使用的Provider是JCEKS(推薦),尤其在保護KeyStore中的私鑰上(使用TripleDes)。PKCS#12是公鑰加密標准,它規定了可包含所有私鑰、公鑰和證書。其以二進制格式存儲,也稱為PFX文件,在windows中可以直接導入到密鑰區,注意,PKCS#12的密鑰庫保護密碼同時也用於保護Key。BKS來自BouncyCastleProvider,它使用的也是TripleDES來保護密鑰庫中的Key,它能夠防止證書庫被不小心修改(Keystore的keyentry改掉1個bit都會產生錯誤),BKS能夠跟JKS互操作,讀者可以用Keytool去TryTry。UBER比較特別,當密碼是通過命令行提供的時候,它只能跟keytool交互。整個keystore是通過PBE/SHA1/Twofish加密,因此keystore能夠防止被誤改、察看以及校驗。以前,SunJDK(提供者為SUN)允許你在不提供密碼的情況下直接載入一個Keystore,類似cacerts,UBER不允許這種情況。證書導入Der/Cer證書導入:要從某個文件中導入某個證書,使用keytool工具的-import命令:1keytool-import-filemycert.der-keystoremykeystore.jks如果在-keystore選項中指定了一個並不存在的密鑰倉庫,則該密鑰倉庫將被創建。如果不指定-keystore選項,則預設密鑰倉庫將是宿主目錄中名為.keystore的文件。如果該文件並不存在,則它將被創建。創建密鑰倉庫時會要求輸入訪問口令,以後需要使用此口令來訪問。可使用-list命令來查看密鑰倉庫里的內容:1keytool-list-rfc-keystoremykeystore.jksP12格式證書導入:keytool無法直接導入PKCS12文件。第一種方法是使用IE將pfx證書導入,再導出為cert格式文件。使用上面介紹的方法將其導入到密鑰倉庫中。這樣的話倉庫裡面只包含了證書信息,沒有私鑰內容。第二種方法是將pfx文件導入到IE瀏覽器中,再導出為pfx文件。新生成的pfx不能被導入到keystore中,報錯:keytool錯誤:java.lang.Exception:所輸入的不是一個X.509認證。新生成的pfx文件可以被當作keystore使用。但會報個錯誤asunknownattr1.3.6.1.4.1.311.17.1,查了下資料,說IE導出的就會這樣,使用Netscape就不會有這個錯誤.第三種方法是將pfx文件當作一個keystore使用。但是通過微軟的證書管理控制台生成的pfx文件不能直接使用。keytool不認此格式,報keytool錯誤:java.io.IOException:。需要通過OpenSSL轉換一下:1opensslpkcs12-inmycerts.pfx-outmycerts.pem2opensslpkcs12-export-inmycerts.pem-outmykeystore.p12通過keytool的-list命令可檢查下密鑰倉庫中的內容:1keytool-rfc-list-keystoremykeystore.p12-storetypepkcs12這里需要指明倉庫類型為pkcs12,因為預設的類型為jks。這樣此密鑰倉庫就即包含證書信息也包含私鑰信息。P7B格式證書導入:keytool無法直接導入p7b文件。需要將證書鏈RootServer.p7b(包含根證書)導出為根rootca.cer和子rootcaserver.cer。將這兩個證書導入到可信任的密鑰倉庫中。1keytool-import-aliasrootca-trustcacerts-filerootca.cer-keystoretestkeytrust.jks遇到是否信任該證書提示時,輸入y1keytool-import-aliasrootcaserver-trustcacerts-filerootcaserver.cer-keystoretestkeytrust.jks總結P12格式的證書是不能使用keytool工具導入到keystore中的TheSun'sPKCS12Keystore對從IE和其他的windows程序生成的pfx格式的證書支持不太好.P7B證書鏈不能直接導入到keystore,需要將裡面的證書導出成cer格式,再分別導入到keystore。
C. java客戶端怎麼訪問帶有pfx格式證書的https網站(伺服器)呢,
使用 訪問https地址。
以下是導入JKS證書的方式,可以參考。
String keystorefile = "file";
String keystorepw = "password";
String keypw = "password";
KeyStore keystore = KeyStore.getInstance("JKS");
keystore.load( new FileInputStream(keystorefile), keystorepw.toCharArray());
KeyManagerFactory keymanagerfactory = KeyManagerFactory.getInstance("SunX509");
keymanagerfactory.init(keystore, keypw.toCharArray());
KeyManager akeymanager[] = keymanagerfactory.getKeyManagers();
TrustManagerFactory trustmanagerfactory = TrustManagerFactory.getInstance("SunX509");
trustmanagerfactory.init(keystore);
TrustManager atrustmanager[] = trustmanagerfactory.getTrustManagers();
sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(akeymanager, atrustmanager, null);
sslSocketFactory = sslcontext.getSocketFactory();
String url = "asdfdf";
URL testURL = new URL(url);
HttpURLConnection urlConnection = (HttpURLConnection) testURL.openConnection();
if (urlConnection instanceof HttpsURLConnection) {
HttpsURLConnection conn = (HttpsURLConnection) urlConnection;
conn.setSSLSocketFactory(sslSocketFactory);
}
D. cer 與 pfx 證書的加密與解密
JAVA不能直接使用pfx證書的,需要去java網站上下一個keytools工具,導入pfx證書後才能使用版。
cer和pfx是成對的,你做了個權cer的話必然會同時生成一個pfx,不曉得你的cer是怎麼做的。
一般來說是這樣的,你先用一些工具,比如剛才說的java的keytools,或者IIS生成一個密鑰請求crs,然後把這個crs發送給密鑰發放的CA,你可以自己搭一個CA或者去買一個,CA會再發給你一個確認後的證書,你再使用這個確認後的cer來結束證書申請過程,最終得到一個私鑰和一個密鑰。
具體的過程參考這里:怎麼申請怎麼使用都包含了
http://www.cnnic.cn/jczyfw/wzws/bzkx/jsjs/
你是JAVA開發的話可以看看tomcat或者apach的,這里用的CA是CNNIC的,不過別家的也都大同小異。
E. 證書,jks、pfx和cer後綴都是什麼文件
jks是JAVA的keytools證書工具支持的證抄書私鑰格襲式。
pfx是微軟支持的私鑰格式。
cer是證書的公鑰。
如果是你私人要備份證書的話記得一定要備份成jks或者pfx格式,否則恢復不了。
簡單來說,cer就是你們家郵箱的地址,你可以把這個地址給很多人讓他們往裡面發信。
pfx或jks就是你家郵箱的鑰匙,別人有了這個就可以冒充你去你家郵箱看信,你丟了這個也沒法開郵箱了。
F. java如何生成.pfx文件java語言可以生成pfx文件嗎
/**
* 證書私鑰存儲設施
*
* @param alias
* KeyStore別名
* @param key
* 密鑰(這里是私鑰)
* @param password
* 保存密碼
* @param chain
* 證書鏈
* @param filePath
* PFX文件路徑
* @throws KeyStoreException
* @throws NoSuchAlgorithmException
* @throws CertificateException
* @throws IOException
*/
private void createKeyStore(String alias, Key key, char[] password,
Certificate[] chain, String filePath) throws KeyStoreException,
NoSuchAlgorithmException, CertificateException, IOException {
KeyStore keyStore = KeyStore.getInstance("pkcs12");
keyStore.load(null, password);
keyStore.setKeyEntry(alias, key, password, chain);
FileOutputStream fos = new FileOutputStream(filePath);
keyStore.store(fos, password);
fos.close();
}
G. 如何在java創建證書PFX文件嗎
開發人員通常需要將PFX文件轉換為某些不同的格式,如PEM或JKS,以便可以為使用版SSL通信的獨立Java客戶端或權WebLogic Server使用
在Security編程中,有幾種典型的密碼交換信息文件格式:
DER-encoded certificate: .cer, .crt
PEM-encoded message: .pem
PKCS#12 Personal Information Exchange: .pfx, .p12
PKCS#10 Certification Request: .p10
PKCS#7 cert request response: .p7r
PKCS#7 binary message: .p7b
H. 什麼是X509格式的證書在java中能否使用X509Certificate對象獲得證書的私鑰信息
證書里怎麼可能有私鑰嘛,異想天開
I. Java如何讀取PFX密鑰文件
package com.Jinhill;
import java.io.*;
import java.util.*;
import java.security.*;
import java.security.cert.Certificate;
public class ReadPFX {
public ReadPFX (){
}
//轉換成十六進制字元串
public static String Byte2String(byte[] b) {
String hs="";
String stmp="";
for (int n=0;n<b.length;n++) {
stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length()==1) hs=hs+"0"+stmp;
else hs=hs+stmp;
//if (n<b.length-1) hs=hs+":";
}
return hs.toUpperCase();
}
public static byte[] StringToByte(int number) {
int temp = number;
byte[] b=new byte[4];
for (int i=b.length-1;i>-1;i--){
b[i] = new Integer(temp&0xff).byteValue();//將最高位保存在最低位
temp = temp >> 8; //向右移8位
}
return b;
}
private PrivateKey GetPvkformPfx(String strPfx, String strPassword){
try {
KeyStore ks = KeyStore.getInstance("PKCS12");
FileInputStream fis = new FileInputStream(strPfx);
// If the keystore password is empty(""), then we have to set
// to null, otherwise it won't work!!!
char[] nPassword = null;
if ((strPassword == null) || strPassword.trim().equals("")){
nPassword = null;
}
else
{
nPassword = strPassword.toCharArray();
}
ks.load(fis, nPassword);
fis.close();
System.out.println("keystore type=" + ks.getType());
// Now we loop all the aliases, we need the alias to get keys.
// It seems that this value is the "Friendly name" field in the
// detals tab <-- Certificate window <-- view <-- Certificate
// Button <-- Content tab <-- Internet Options <-- Tools menu
// In MS IE 6.
Enumeration enumas = ks.aliases();
String keyAlias = null;
if (enumas.hasMoreElements())// we are readin just one certificate.
{
keyAlias = (String)enumas.nextElement();
System.out.println("alias=[" + keyAlias + "]");
}
// Now once we know the alias, we could get the keys.
System.out.println("is key entry=" + ks.isKeyEntry(keyAlias));
PrivateKey prikey = (PrivateKey) ks.getKey(keyAlias, nPassword);
Certificate cert = ks.getCertificate(keyAlias);
PublicKey pubkey = cert.getPublicKey();
System.out.println("cert class = " + cert.getClass().getName());
System.out.println("cert = " + cert);
System.out.println("public key = " + pubkey);
System.out.println("private key = " + prikey);
return prikey;
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
}
J. 如何在Java處理PFX格式證書
證書的查看:ie瀏覽器證書
打開ie瀏覽器的「工具」,選擇「internet選項」,參考圖例:
選擇「內容」選項卡:
點擊「證書」按鈕,系統將彈出證書管理器窗口,如下圖:
根據客戶號選擇您自己的證書,然後點擊「查看」,系統彈出證書查看窗口:
證書的導出:
備份瀏覽器證書
打開ie瀏覽器的「工具」,選擇「internet選項」,選擇「內容」選項卡,點擊「證書」按鈕。打開證書管理器窗口,如下圖:
在證書列表中,根據您的客戶號找到對應的證書。例如,我的客戶號是06000000058,在列表中找到自己的證書,號碼是06000000058.0000.0000。選中該證書,然後選擇「導出」,啟動證書導出向導,如下圖:
點擊下一步,系統提示是否將私鑰導出,選擇導出私鑰,點擊「下一步」如下圖:
注意:如果您要將證書進行備份,請確定選擇將「導出私鑰」,否則您導出的證書將是不完整的(不含私鑰)。
選擇保存文件格式為「私人信息交換」,並根據需要選擇相應選項,然後點擊「下一步」:
系統將提示您輸入備份證書文件的保護口令(無位數限制),該口令在您恢復證書時必須使用,您一定要牢記。然後點擊下一步,如下圖:
系統提示備份的文件名,請輸入文件名來保存該證書,後綴為.pfx,點擊「下一步」:
選擇「完成」,如果您的ie證書有保護密碼,您還需要輸入保護密碼,如下圖:
現在可以在文件系統中看到你所導出的證書文件了。請妥善保管證書,避免被他人復制。