方法一:

1.先用keytool导出pfx文件。第一个123456是jks密码,后边两个是新生成的pfx的密码

keytool -v -importkeystore -srckeystore D:\\fuwuqi.jks -srcstoretype jks -srcstorepass 123456 -destkeystore D:\\fuwuqi.pfx -deststoretype pkcs12 -deststorepass 123456 -destkeypass 123456

2.用ssl导出key文件

openssl pkcs12 -in fuwuqi.pfx -nocerts -nodes -out fuwuqi.key

方法二:

代码生成

package com.acca.dovepay.nucc.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.UnrecoverableKeyException;
import java.security.cert.Certificate; import sun.misc.BASE64Encoder; public class CertUtil { private File keystoreFile; private String keyStoreType; private char[] password; private String alias; private File exportedFile; public KeyPair getPrivateKey(KeyStore keystore, String alias,
char[] password) { try { Key key = keystore.getKey(alias, password); if (key instanceof PrivateKey) { Certificate cert = keystore.getCertificate(alias); PublicKey publicKey = cert.getPublicKey(); return new KeyPair(publicKey, (PrivateKey) key); } } catch (UnrecoverableKeyException e) { } catch (NoSuchAlgorithmException e) { } catch (KeyStoreException e) { } return null; } public void export() throws Exception { KeyStore keystore = KeyStore.getInstance(keyStoreType); BASE64Encoder encoder = new BASE64Encoder(); keystore.load(new FileInputStream(keystoreFile), password); KeyPair keyPair = getPrivateKey(keystore, alias, password); PrivateKey privateKey = keyPair.getPrivate(); String encoded = encoder.encode(privateKey.getEncoded()); FileWriter fw = new FileWriter(exportedFile); fw.write("----BEGIN PRIVATE KEY----\n"); fw.write(encoded); fw.write("\n"); fw.write("----END PRIVATE KEY----\n"); Certificate cert = keystore.getCertificate(alias); PublicKey publicKey = cert.getPublicKey(); String encoded2 = encoder.encode(publicKey.getEncoded()); fw.write("----BEGIN CERTIFICATE----\n"); fw.write(encoded2); fw.write("\n"); fw.write("----END CERTIFICATE----\n"); fw.close(); } public static void main(String args[]) throws Exception { CertUtil export = new CertUtil(); export.keystoreFile = new File("D:\\20181120fuwuqi.jks"); export.keyStoreType = "JKS"; export.password = "123456".toCharArray(); export.alias = "mykey"; export.exportedFile = new File("D:\\SSS.key"); export.export();
}
}

另crt文件的生成,转载https://jingyan.baidu.com/article/154b463178eac928ca8f41a9.html?qq-pf-to=pcqq.c2c

tomcat的jks的私钥导出nginx需要的key文件的更多相关文章

  1. Nginx证书配置:tomcat证书jks文件转nginx证书.cet和key文件

    Nginx证书配置:tomcat证书jks文件转nginx证书.cet和key文件1.查看jks文件中的entry. keytool -list -keystore server.jks Enter ...

  2. tomcat单机多应用部署配合Nginx负载均衡

    一.Windows 配置tomcat . 安装两个tomcat服务器以上 . 配置环境变量 CATALINA_BASE:D:\servers\Tomcat8 CATALINA_HOME:D:\serv ...

  3. IOS证书/私钥/代码签名/描述文件

    1.   相关资源 (1)   钥匙串程序(常用工具->钥匙串),用于创建证书请求.安装证书.导出私钥等 (2)   IOS开发中心:https://developer.apple.com/de ...

  4. nginx上传大文件,413错误解决

    在nginx里增加了配置. client_max_body_size 500m; proxy_connect_timeout 600; proxy_read_timeout 600; proxy_se ...

  5. nginx跨域设置&文件上传大小限制

    在部署项目的时候碰到这么一个问题:XMLHttpRequest cannot load,下面阐述一下这个问题 问题背景: 用nginx+tomcat部署项目.tomcat用的8080端口,nginx用 ...

  6. Nginx 限制上传文件的大小。responded with a status of 413 (Request Entity Too Large)

    # 限制请求体的大小,若超过所设定的大小,返回413错误. client_max_body_size 50m; # 读取请求头的超时时间,若超过所设定的大小,返回408错误. client_heade ...

  7. MySQL如何导出带日期格式的文件

    一网友问在MySQL中如何只用SQL语句导出带日期格式的文件.觉得有点意思,于是尝试了一下.导出文件使用SELECT INTO OUTFILE 但是OUTFILE后面的值不能使用变量,所以只能使用动态 ...

  8. asp.net教程:GridView导出到Excel或Word文件

    asp.net教程:GridView导出到Excel或Word文件</ br> 在项目中我们经常会遇到要求将一些数据导出成Excel或者Word表格的情况,比如中国移动(我是中国移动用户) ...

  9. 关于用Max导出Unity3D使用的FBX文件流程注解

    原地址:http://hi.baidu.com/phpstyle/item/c167a4c0694670b10d0a7b87 关于用Max导出Unity3D使用的FBX文件流程注解(转载) (2011 ...

随机推荐

  1. Window 产品密钥

    2019.4.2 测试可用 window2003         DF74D-TWR86-D3F4V-M8D8J-WTT7M

  2. JS设计模式——工厂模式详解

    它的领域中同其它模式的不同之处在于它并没有明确要求我们使用一个构造器.取而代之,一个工厂能提供一个创建对象的公共接口,我们可以在其中指定我们希望被创建的工厂对象的类型. 简单工厂模式:使用一个类(通常 ...

  3. Page Lifecycle API

    今天的现代浏览器有时在系统资源受限的情境下会暂停页面或完全放弃执行它.将来,浏览器会主动执行此操作,因此它们会消耗更少的电量和内存.在Chrome 68中提供的Page Lifecycle API提供 ...

  4. 理解vue之element-ui中的 <template slot-scope="scope">

    https://blog.csdn.net/tg928600774/article/details/81945140?utm_source=blogxgwz1

  5. thinkphp 判断有没有登录 没有登录就自动给他打到登录去

    html 代码 <a href="javascript:;" class="user_uid"> <i class="iconfon ...

  6. x86汇编

    ● 实模式下32bit处理器,与8086兼容,例如loop 指令结束标志,只判断cx,而不是ecx ● IO端口 实际上是一些寄存器,在IO接口当中.向外设读写数据,要通过读写IO端口来实现. 有些计 ...

  7. 前端 html 篇

    1 link和@import的区别是?     区别1:link是XHTML标签,除了加载CSS外,还可以定义RSS等其他事务:@import属于CSS范畴,只能加载CSS. 区别2:link引用CS ...

  8. python练习题-员工信息表

    周末大作业:实现员工信息表文件存储格式如下:id,name,age,phone,job1,Alex,22,13651054608,IT2,Egon,23,13304320533,Tearcher3,n ...

  9. java并发包消息队列(也即阻塞队列BlockingQueue)

    下面是典型的消息队列的生产者与消费者模式的例子

  10. [js]js的惰性声明, js中声明过的变量(预解释),后在不会重新声明了

    js的惰性声明, js中声明过的变量(预解释),后在不会重新声明了 fn(); // 声明+定义 js中声明过一次的变量,之后在不会重新声明了 function fn() { console.log( ...