今天遇到一个问题,让我这边提供ssl证书的 pem和key。但是查看了tomcat的配置发现只有一个tomcat.keystore文件
配置如下

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocal"maxThreads="150" SSLEnabled="true" shceme="https" secure="true"clientAuth="false" sslProtocol="TLS"sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2"ciphers="XXXXXXXXXX,XXXXXXXXXXX,XXXXXXXXXXX"keystorePass="123456" minSpareThreads="25" connectionTimeout="300"keystoreFile="/usr/local/server.keystore"/>

由此我就需要将 keystore转换成pem。

keystore 不能直接转化为 pem ,要先转成 pfx 再转 pem。

1.keystore 转 pfx

这里用java代码转的,转之前要先创建好接收用的 .pfx文件(新建记事本就可以,把后缀改为.pfx)

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 test011 {public static final String PKCS12 = "PKCS12";public static final String JKS = "JKS";public static final String PFX_KEYSTORE_FILE = "C:\\new_server.pfx";public static final String KEYSTORE_PASSWORD = "123456";public static final String JKS_KEYSTORE_FILE = "C:\\server.keystore";/*** 将keystore转为pfx*/public static void coverToPfx() {try {KeyStore inputKeyStore = KeyStore.getInstance("JKS");FileInputStream fis = new FileInputStream(JKS_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();KeyStore outputKeyStore = KeyStore.getInstance("PKCS12");outputKeyStore.load(null, KEYSTORE_PASSWORD.toCharArray());Enumeration enums = inputKeyStore.aliases();while (enums.hasMoreElements()) { // we are readin just one// certificate.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,KEYSTORE_PASSWORD.toCharArray(), certChain);}}FileOutputStream out = new FileOutputStream(PFX_KEYSTORE_FILE);outputKeyStore.store(out, nPassword);out.close();} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {coverToPfx();}
}

2. 从pfx中导出所需要的 pem证书 和 pem[私钥]

转换证书

# -in 后为pfx文件路径  -out后是要导出的pem文件路径,pem文件需要提前创建好
openssl pkcs12 -in C:\server.pfx -nokeys -out C:\server.pem

转换秘钥

# -in 后为pfx文件路径 -out 后是要导出的pem文件路径,pem文件需要体检创建好
openssl pkcs12 -in C:\server.pfx -nocerts -out C:\key.pem -nodes

补充

常见的OpenSSL证书操作
证书操作有四种基本类型。查看,转换,组合和提取。

1. 查看证书

即使PEM编码的证书是ASCII,它们是不可读的。这里有一些命令可以让你以可读的形式输出证书的内容;

1.1 查看pem证书

openssl x509 -in cert.pem -text -noout
openssl x509 -in cert.cer -text -noout
openssl x509 -in cert.crt -text -noout

1.2 查看DER编码证书

openssl x509 -in certificate.der -inform der -text -noout

2. 转换证书格式

转换可以将一种类型的编码证书存入另一种。(即PEM到DER转换)

# PEM到DER
openssl x509 -in cert.crt -outform der-out cert.der
# DER到PEM
openssl x509 -in cert.crt -inform der -outform pem -out cert.pem

3. 组合证书

在某些情况下,将多个X.509基础设施组合到单个文件中是有利的。一个常见的例子是将私钥和公钥两者结合到相同的证书中。

组合密钥和链的最简单的方法是将每个文件转换为PEM编码的证书,然后将每个文件的内容简单地复制到一个新文件中。这适用于组合文件以在Apache中使用的应用程序。

4. 证书提取

一些证书将以组合形式出现。 一个文件可以包含以下任何一个:证书,私钥,公钥,签名证书,证书颁发机构(CA)和/或权限链。

证书 keystore 转换为 pem再提取 证书/私钥相关推荐

  1. Android签名证书 keystore jks pem x509

    Android签名证书 背景 因业务需求,经常与系统厂商打交道,大多需要厂商开放root权限 目前获取系统权限的总结有三种方式(均有实际应用) platform签名 root固件 (有su) 调用厂商 ...

  2. java p12 ssl_从 p12 格式 SSL 证书解出 pem 格式公钥私钥给 Postman 使用

    目的 Postman 的(非 Chrome 扩展版的)app 并不能读取系统中的客户端证书,这种调试要发送客户端证书的 https 请求的时候就得自己另外设置. 系统直接导出证书有 cer 和 p12 ...

  3. keystore生成自签名证书

    tomcat 配置自签名ssl证书 keystore生成自签名证书过程 1.打开命令窗口,输入cmd,切换到Java的jdk的bin目录,回车: (如果没有配置环境,需要先切换cmd命令的目录:cd ...

  4. java keytool nginx_java 自签名证书转 nginx 所需证书

    下面个将介绍怎样利用 jdk keytool 生成自签名证书,然后使用 JKS2PFX 工具将证书转换成 pem 格式.详细步骤如下: (1)先试用 jdk 自带的 keytool 工具生成证书,如下 ...

  5. android 导入系统证书,安卓手机添加系统证书方法(HTTPS抓包)

    安卓7.0以后,安卓不信任用户安装的证书,所以抓https时无法解码请求,对于第三方应用,需要将证书添加为系统证书,网上解决方法较多,比如使用安卓模拟器(兼容性差,很多应用闪退),使用xposed框架 ...

  6. 关于keystore 证书转*.x509.pem 和*.pk8

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  7. https证书pfx 生成 pem,crt,key

    (1)将.pfx格式的证书转换为.pem文件格式:openssl pkcs12 -in xxx.pfx -nodes -out server.pem(2)从.pem文件中导出私钥server.key: ...

  8. HTTPS证书转换成PEM格式

    PEM 格式的证书文件(*.pem)一般为以下格式: 注意:PEM 格式证书文件可用 notepad++ 等文本编辑器打开. CER / CRT 格式证书转换为 PEM 格式 对于 CER / CRT ...

  9. 深入浅出 SSL/CA 证书及其相关证书文件(pem、crt、cer、key、csr)

    互联网是虚拟的,通过互联网我们无法正确获取对方真实身份.数字证书是网络世界中的身份证,数字证书为实现双方安全通信提供了电子认证.数字证书中含有密钥对所有者的识别信息,通过验证识别信息的真伪实现对证书持 ...

最新文章

  1. iOS9网络适配 info.plist配置
  2. JDBC + SAP云平台 = 运行在云端的数据库应用
  3. mysql jdbc 占位符_JDBC中占位符报错是什么鬼啊
  4. 鸿蒙系统安兔兔排行榜,安兔兔评测鸿蒙版下载-安兔兔评测 鸿蒙版v9.0.7-PC6鸿蒙网...
  5. 如何方便的让你的集合引发改变事件
  6. java list集合增删改_Java中集合类list的增删改查
  7. java更改reader字体颜色,Java 修改 文件内容 and BufferedReader 乱码问题
  8. Prism初研究之使用Prism 5.0开发模块化应用
  9. vue集成spreadjs
  10. C语言回文平方数,C语言实例 回文数
  11. b站前端大佬_B站有哪些高质量的UP主值得推荐?
  12. 循环神经网络--RNN GRU LSTM 对比分析
  13. windows server2012计算机管理“系统工具”里面没有“本地用户和组”怎么办?
  14. 拨开字符编码的迷雾--编译器如何处理文件编码
  15. Verilog --状态机编码方式
  16. linux命令:xxd读取二进制文件
  17. opengles图像处理之图片锐化处理
  18. 米尔和黑金5EV的DDR4
  19. 如何跳过前端JavaScript的验证
  20. 离散数学-集合:1.集合的基本概念

热门文章

  1. 蜗牛学院:2017毕业生平均起薪出炉,排名前三的居然是这些行业
  2. 泰坦尼克号可视化数据分析报告
  3. Nano30小型声发射传感器
  4. navicat导入数据库脚本文件报错集合
  5. 搭建一套完整的网络视频流媒体直播/点播服务系统需要具备哪些条件?
  6. ssh mysql crm_Jsp+Ssh2+Mysql实现的CRM客户关系管理系统
  7. aspmaker学习手记
  8. dnf单机版 不显示服务器,最新DNF70单机资源,70不悔终极版精修PVF+客户端+服务器一键端...
  9. EN 12101-7:烟道型材 CE认证
  10. 什么是码元?(举例详解)