「java读取pfx」java读取文件一行一行的读

博主:adminadmin 2022-12-01 04:55:07 66

今天给各位分享java读取pfx的知识,其中也会对java读取文件一行一行的读进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

pfx格式文件如何打开?如题 谢谢了

pfx可能是证书的备份文件,这时可双击相关文件即可导入证书,如果要求输入密码,则输入当初设定的密码即可。

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:failedtodecryptsafecontentsentry。需要通过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。

java客户端怎么访问带有pfx格式证书的https网站(服务器)呢,

使用HttpURLConnection 访问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);

}

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;nb.length;n++) {

stmp=(java.lang.Integer.toHexString(b[n] 0XFF));

if (stmp.length()==1) hs=hs+"0"+stmp;

else hs=hs+stmp;

//if (nb.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(temp0xff).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;

}

}

关于java读取pfx和java读取文件一行一行的读的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-01,除非注明,否则均为首码项目网原创文章,转载请注明出处。