Android SSL BKS证书生成, 以及PFX与JKS证书的转换

一.Android SSL BKS 证书生成过程

  1.生成服务器jks证书:

keytool -genkey -alias peer -keystore peer.jks

  2.导出cert证书:

keytool -exportcert -alias peer -file peer.cert -keystore peer.jks

  3.生成Android客户端bks证书

  需要用到 bcprov-ext-jdk15on-151.jar ,         官网:http://www.bouncycastle.org/latest_releases.html

  将jar包放到 %JAVA_HOME%\jre\lib\security

keytool -importcert -keystore peer.bks -file peer.cert -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider

二.PFX与JKS证书的转换

  工具类:

import java.io.FileInputStream;import java.io.FileOutputStream;import java.security.Key;import java.security.KeyStore;import java.security.cert.Certificate;import java.util.Enumeration;

public class CertificateConvertUtil {        public static final String PKCS12 = "PKCS12";    public static final String JKS = "JKS";        /**     * pkcs12 转 jks     * @param input_keystore_file     pkcs12证书路径     * @param keystore_password        pkcs12证书密钥库口令     * @param ouput_keystore_file     jks证书路径     */    public static void PKCS12ToJKS(String input_keystore_file,            String keystore_password, String ouput_keystore_file) {        try {            KeyStore inputKeyStore = KeyStore.getInstance(PKCS12);            FileInputStream fis = new FileInputStream(input_keystore_file);

            char[] nPassword = null;            if ((keystore_password == null)                    || keystore_password.trim().equals("")) {                nPassword = null;            } else {                nPassword = keystore_password.toCharArray();            }

            inputKeyStore.load(fis, nPassword);            fis.close();

            System.out.println("keystore type=" + inputKeyStore.getType());

            KeyStore outputKeyStore = KeyStore.getInstance(JKS);

            outputKeyStore.load(null, nPassword);

            Enumeration enums = inputKeyStore.aliases();            while (enums.hasMoreElements()) {                                String keyAlias = (String) enums.nextElement();                System.out.println("alias=[" + keyAlias + "]");

                if (inputKeyStore.isKeyEntry(keyAlias)) {                    Key key = inputKeyStore.getKey(keyAlias, nPassword);                    Certificate[] certChain = inputKeyStore                            .getCertificateChain(keyAlias);                    outputKeyStore.setKeyEntry(keyAlias, key, nPassword,                            certChain);                }                FileOutputStream out = new FileOutputStream(ouput_keystore_file);                outputKeyStore.store(out, nPassword);                out.close();                outputKeyStore.deleteEntry(keyAlias);                                System.out.println("convert is finished!");            }        } catch (Exception e) {            e.printStackTrace();        }    }        /**     * jks 转 pkcs12     * @param input_keystore_file    jks证书路径     * @param keystore_password        jks证书密钥库口令     * @param ouput_keystore_file    pkcs12证书路径     */    public static void JKSToPKCS12(String input_keystore_file,            String keystore_password, String ouput_keystore_file) {        try {            KeyStore inputKeyStore = KeyStore.getInstance(JKS);            FileInputStream fis = new FileInputStream(input_keystore_file);

            char[] nPassword = null;            if ((keystore_password == null)                    || keystore_password.trim().equals("")) {                nPassword = null;            } else {                nPassword = keystore_password.toCharArray();            }

            inputKeyStore.load(fis, nPassword);            fis.close();

            System.out.println("keystore type=" + inputKeyStore.getType());

            KeyStore outputKeyStore = KeyStore.getInstance(PKCS12);

            outputKeyStore.load(null, nPassword);

            Enumeration enums = inputKeyStore.aliases();            while (enums.hasMoreElements()) {                                String keyAlias = (String) enums.nextElement();                System.out.println("alias=[" + keyAlias + "]");

                if (inputKeyStore.isKeyEntry(keyAlias)) {                    Key key = inputKeyStore.getKey(keyAlias, nPassword);                    Certificate[] certChain = inputKeyStore                            .getCertificateChain(keyAlias);                    outputKeyStore.setKeyEntry(keyAlias, key, nPassword,                            certChain);                }                FileOutputStream out = new FileOutputStream(ouput_keystore_file);                outputKeyStore.store(out, nPassword);                out.close();                outputKeyStore.deleteEntry(keyAlias);                                System.out.println("convert is finished!");            }        } catch (Exception e) {            e.printStackTrace();        }    }

}

  使用工具类进行转换时, 会将 证书Alias 输出到控制台.

  测试代码:

public static void main(String[] args) {
        CertificateConvertUtil.PKCS12ToJKS("D:/peer.pfx", "123456", "D:/peer.jks");
    }
时间: 2024-08-29 15:22:24

Android SSL BKS证书生成, 以及PFX与JKS证书的转换的相关文章

Openssl CA证书生成以及双向认证,及windows系统证书批量导出,android cer转bks

Openssl CA证书生成以及双向认证 首先本文主要参照这篇文章写的 http://h2appy.blog.51cto.com/609721/1181234 只是途中有些问题折腾了一下,比如openssl.cnf如何来的,这个文件在编译完openssl后,应该openssl根目录下/apps/demoCA有个,可以把他拷贝到openssl.exe同一级目录 里面有些目录配置,自己可以修改下,但是我没有修改,所以最后生成的文件路径必须按openssl.cnf里面来,至于如何编译openssl 请

Windows下Nginx配置SSL实现Https访问(包含证书生成)

Vincent.李 Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https? HTTP全名超文本传输协议,客户端据此获取服务器上的超文本内容.超文本内容则以HTML为主,客户端拿到HTML内容后可根据规范进行解析呈现.因此,HTTP主要负责的是"内容的请求和获取".问题就出在这部分.行监控.劫持.阻挡等行为很容易导致网站泄密,一些关键参数比如登录密码开发者会在客户端

ssl证书生成

ssl证书生成 openssl req -new -x509 -days 3650 -nodes -out /opt/ssl/certs/postfix.pem -keyout /opt/ssl/private/postfix.pem 第一个是证书,第二个是key(私钥) 可以应用在很多程序上. 下面举两个例子: nginx postfix nginx ssl server { listen 443; server_name _; ssl on; ssl_certificate /opt/ssl

openssl生成iis需要的pfx格式的证书

合成.pfx证书 将私钥文件(server.key)和服务器crt证书文件(server.crt ),放到openssl安装目录的bin目录下. 控制台也进到此目录下,然后执行下面指令. openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt 然后再看bin目录下面多了一个server.pfx 文件,即为生成的pfx证书文件 原文地址:https://www.cnblogs.com/Leechg/p/1014

caddy 反代wordpress + ssl证书生成

caddy 反代wordpress + ssl证书生成 安装caddy 1:升级系统: sudo yum update 2:安装 EPEL repository: sudo yum install epel-release 3:安装 Caddy: sudo yum install caddy 4:文件 /usr/bin/caddy -conf /etc/caddy/caddy.conf 添加反向代理配置 www.robinplus.com { # 同时启用 http 和 https 不会自动转跳

[转载] 创建为ClickOnce清单签名的.pfx格式数字证书

使用vs2013自动创建的.pfx数字证书默认有效期只有一年,并且“颁发者”.“颁发给”均为当前机器名和当前登陆用户名的组合,其实我们完全可以创建更友好的.pfx数字证书. 打开Microsoft .NET Framework 的SDK命令提示,按以下步骤操作: 1.创建一个自我签署的X.509证书(.cer)和一个.pvk私钥文件,用到makecert工具,命令如下: makecert -r -n "CN= sndnvaps " -b 08/31/2015 -e 08/31/2030

证书生成和管理总结

一.OpenSSL工具管理证书 OpenSSL 是一个强大的安全套接字层密码库,包括了加密算法,常用密钥和证书管理,SSL协议等功能.OpenSSL提供的命令非常多,这里只简单列出OpenSSL生成密钥和证书的一些操作(Window需要以管理员身份运行cmd): 生成PEM格式的密钥 openssl genrsa -out rsakey0.pem 2048 算法为rsa,长度为2048,保持到rsakey0.pem文件中. openssl genrsa -des3 -out rootca.key

添加自签发的 SSL 证书为受信任的根证书

通过 SSL 加密的 HTTPS 连接访问网站时,需要安装并配置一个受信任的 CA 根证书(Trusted CA Root Certificate).平常访问一些加密网站之所以不需要自己安装证书,是因为系统或浏览器已经提前安装了一些受信任机构颁发的证书.但有些时候访问一些组织或个人自己签发证书的网站的时候,就会收到浏览器发出的警告.此时可以将该证书添加到“受信任的根证书颁发机构”存储区,然后就不会再收到安全提示了. 快捷阅读目录 前言 从Windows 自带的浏览器 Internet Explo

Atitti.数字证书体系cer pfx attilax总结

一.数字证书常见标准 1 数字证书文件格式(cer和pfx)的区别: 1 二.数字证书存储内容 2 X.509是一种非常通用的证书格式. 2 详细特征 2 X.509证书格式 3 一.数字证书常见标准 数字证书体现为一个或一系列相关经过加密的数据文件.常见格式有: 符合PKI ITU-T X509标准,传统标准(.DER .PEM .CER .CRT) 符合PKCS#7 加密消息语法标准(.P7B .P7C .SPC .P7R) 符合PKCS#10 证书请求标准(.p10) 符合PKCS#12