使用的是CFCA簽發的用於銀行間交換數據的證書,下載后直接添加到瀏覽器中
1、導出
從瀏覽器導出p12文件(包含私鑰)
2、驗證
兩種方式:
openssl
代碼(請注意alias別名是如何獲取的):
package com.shengpay.mas.demo.cert; import org.apache.commons.codec.binary.Base64; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.security.*; import java.security.cert.*; import java.security.cert.Certificate; import java.util.Enumeration; /** * Description: 讀取P12格式的個人交換庫 * <p> * User: lishaohua * Date: 2017/12/27 12:51 */ public class P12Demo { public static void main(String[] args) throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException, UnrecoverableKeyException { String keyStorePath = "D:/123456.pfx"; String password = "123456"; // 實例化密鑰庫,默認JKS類型 KeyStore ks = KeyStore.getInstance("PKCS12"); // 獲得密鑰庫文件流 FileInputStream is = new FileInputStream(keyStorePath); // 加載密鑰庫 ks.load(is, password.toCharArray()); // 關閉密鑰庫文件流 is.close(); //私鑰 Enumeration aliases = ks.aliases(); String keyAlias = null; if (aliases.hasMoreElements()){ keyAlias = (String)aliases.nextElement(); System.out.println("p12's alias----->"+keyAlias); } PrivateKey privateKey = (PrivateKey) ks.getKey(keyAlias, password.toCharArray()); String privateKeyStr = Base64.encodeBase64String(privateKey.getEncoded()); System.out.println("私鑰------------->" + privateKeyStr); //公鑰 Certificate certificate = ks.getCertificate(keyAlias); String publicKeyStr = Base64.encodeBase64String(certificate.getPublicKey().getEncoded()); System.out.println("公鑰------------->"+publicKeyStr); } }
3、使用
發布公鑰或者雙向認證等。
具體代碼略...