范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Java,数字证书,证书签名和验签,格式转换,JKS格式与PFX转换

  概述
  数字证书
  互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。
  数字证书是由权威机构(CA机构),又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。
  数字证书的应用场景
  1、服务器证书,安装于服务器设备上,用来证明服务器的身份和进行通信加密,服务器证书可以用来防止欺诈钓鱼站点。
  2、客户端个人/企业组织证书,用来身份认证和电子签名的,SSL双向登录,文档签名,代码签名,一些网页上的表单签名。
  数字证书相关参考内容:
  1、密钥库和证书格式: https://www.toutiao.com/a6934192620839109127/
  2、Nginx配置SSL证书: https://www.toutiao.com/a7028371480148754956/
  3、读取网站申请SSL证书,JKS、PFX、CRT格式: https://www.toutiao.com/a7029183711942066695/
  4、命令制作证书及代码生成证书:https://www.toutiao.com/i7042515644935406118/?group_id=7042515644935406118证书签名
  pom.xml      org.bouncycastle     bcprov-jdk15to18     1.70       org.bouncycastle     bcpkix-jdk15to18     1.70 
  签名和验签案例 package com.what21.netty01.demo01.sign;  import com.what21.netty01.demo01.cert2.KeyStoreUtils;  public class CertSignUtilsDemo {      public static void main(String[] args) {         // 读取证书         KeyStoreUtils.KeyStoreEntry keyStoreEntry = KeyStoreUtils.readToKeyStoreEntry();         // ========================================================================//         // 证书签名====>使用证书私钥签名         // ========================================================================//         String text = "被签名的内容";         String signContent = "";         try {             // 签名             signContent = CertSignUtils.sign(keyStoreEntry.getPrivateKey(), text);         } catch (Exception e) {             e.printStackTrace();         }         System.out.println(signContent);         // ========================================================================//         // 证书验签====>使用证书公钥验签         // ========================================================================//         boolean verifySigned = false;         try {             // 验签             verifySigned = CertSignUtils.verify(keyStoreEntry.getPublicKey(), text, signContent);         } catch (Exception e) {             e.printStackTrace();         }         System.out.println(verifySigned);     }  }package com.what21.netty01.demo01.sign;  import java.security.PrivateKey; import java.security.PublicKey; import java.security.Signature; import java.util.Base64;  public class CertSignUtils {      /**      * 签名      *      * @param privateKey      * @param content      * @return      * @throws Exception      */     public static String sign(PrivateKey privateKey, String content) throws Exception {         // 用私钥对信息生成数字签名         Signature signature = Signature.getInstance("SHA384WithRSA");         signature.initSign(privateKey);         byte[] data = content.getBytes("utf-8");         signature.update(data);         byte[] signedData = signature.sign();         return Base64.getEncoder().encodeToString(signedData);     }       /**      * 验证签名      *      * @param publicKey      * @param content      * @param sign      * @return      * @throws Exception      */     public static boolean verify(PublicKey publicKey, String content, String sign)             throws Exception {         Signature signature = Signature.getInstance("SHA384WithRSA");         signature.initVerify(publicKey);         byte[] data = content.getBytes("utf-8");         signature.update(data);         boolean result = signature.verify(Base64.getDecoder().decode(sign));         return result;     }  }
  JKS格式与PFX格式相互转换 package com.what21.netty01.demo01.cert3;  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 JKSConvertor {      // 证书格式     public static final String JKS = "JKS";     public static final String PKCS12 = "PKCS12";      /**      * @param storePath      * @param storePasswd      * @param pfxPath      * @throws Exception      */     public static void toPKCS12(String storePath, String storePasswd, String pfxPath) throws Exception {         // 读取KeyStore         KeyStore inputKeyStore = KeyStore.getInstance(JKS);         FileInputStream inputStream = new FileInputStream(storePath);         char[] nPassword = storePasswd.toCharArray();         inputKeyStore.load(inputStream, nPassword);         inputStream.close();         // 创建PKCS12         KeyStore outputKeyStore = KeyStore.getInstance(PKCS12);         outputKeyStore.load(null, storePasswd.toCharArray());         Enumeration enumStrs = inputKeyStore.aliases();         while (enumStrs.hasMoreElements()) {             String keyAlias = enumStrs.nextElement();             if (inputKeyStore.isKeyEntry(keyAlias)) {                 Key key = inputKeyStore.getKey(keyAlias, nPassword);                 Certificate[] certChain = inputKeyStore.getCertificateChain(keyAlias);                 outputKeyStore.setKeyEntry(keyAlias, key, storePasswd.toCharArray(), certChain);             }         }         // 输出         FileOutputStream outputStream = new FileOutputStream(pfxPath);         outputKeyStore.store(outputStream, nPassword);         outputStream.close();     }      /**      * @param args      * @throws Exception      */     public static void main(String[] args) throws Exception {         JKSConvertor.toPKCS12("D://localhost_server.jks", "123456", "D://localhost_server.pfx");         JKSConvertor.toPKCS12("D:/localhost_client1.jks", "123456", "D:/localhost_client1.pfx");     }  }package com.what21.netty01.demo01.cert3;  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 PKCS12Convertor {      // 证书格式     public static final String JKS = "JKS";     public static final String PKCS12 = "PKCS12";      /**      * @param pfxPath      * @param storePasswd      * @param jksPath      * @throws Exception      */     public static void toJKS(String pfxPath, String storePasswd, String jksPath) throws Exception {         KeyStore inputKeyStore = KeyStore.getInstance(PKCS12);         // 加载证书         FileInputStream inputStream = new FileInputStream(pfxPath);         // P12证书密码         char[] nPassword = storePasswd.toCharArray();         inputKeyStore.load(inputStream, nPassword);         inputStream.close();         KeyStore outputKeyStore = KeyStore.getInstance(JKS);         outputKeyStore.load(null, storePasswd.toCharArray());         Enumeration enumStrs = inputKeyStore.aliases();         while (enumStrs.hasMoreElements()) {             String keyAlias = enumStrs.nextElement();             if (inputKeyStore.isKeyEntry(keyAlias)) {                 Key key = inputKeyStore.getKey(keyAlias, nPassword);                 Certificate[] certChain = inputKeyStore.getCertificateChain(keyAlias);                 outputKeyStore.setKeyEntry(keyAlias, key, storePasswd.toCharArray(), certChain);             }         }         FileOutputStream outputStream = new FileOutputStream(jksPath);         outputKeyStore.store(outputStream, nPassword);         outputStream.close();     }      /**      * @param args      * @throws Exception      */     public static void main(String[] args) throws Exception {         // keytool -list -keystore D://localhost_server.2.jks         // keytool -list -rfc -keystore D://localhost_server.2.jks -storepass 123456         PKCS12Convertor.toJKS("D://localhost_server.pfx", "123456", "D://localhost_server.2.jks");         // keytool -list -keystore D://localhost_client1.2.jks         // keytool -list -rfc -keystore D://localhost_client1.2.jks -storepass 123456         PKCS12Convertor.toJKS("D:/localhost_client1.pfx", "123456", "D:/localhost_client1.2.jks");     }  }

什么是区块链?有很多朋友都问过我一个问题,什么是区块链?以前也断断续续地讲过一些区块链的内容,集中性不太强,今天干脆我们单独讲一讲区块链,把它讲透。然后您就会明白,区块链和各种数字资产,加密货币618千元机怎么选?以下4款物超所值,总有你想要的618年中购物节来了,这次优惠程度,丝毫不比双十一差,很多手机厂商为了销量,高端机大幅度跌价,新机也有所跌价,这点在以往是没有出现过的。相信不少网友想在618选择一款适合自己的手机韩国银行寻找开发央行数字货币的技术伙伴韩国的国家数字货币试点计划在2021年8月至12月进行。据悉,韩国央行目前正在寻找一个技术供应商来设计一个数字韩元的试点平台。韩国央行正在推进其国家数字货币计划,因为它现在正在寻找中国黑客教父,国旗挂到日本网站,光顾美金融系统,拒马云聘请发展到今天,互联网依然是个很神奇的东西。他可以在最短的时间内缩短人与人之间沟通交流的距离,不过这一方是我们普通人用得最多。但对于一些互联网大佬而言,他们可以利用互联网研发出很多AP新能源中的异类,理想ONE理想ONE这款车感刚刚上市的时候,有很多朋友问我是否看好这款车,他们对这款车表现出了极大的兴趣,那我们今天就来看一看,传说中的增程式电动车理想ONE到底怎么样。在我所知的三缸车型中行情分析跳水近千元,iPhone12系列还值得买吗?涛哥价格分析,一起走进华强北行情趋势。这两天华强北一直在风口浪尖上,赛格大厦因为不明原因晃动一直霸占着热搜榜,这座华强北地标级建筑目前已由专家进行排查原因,在官方原因未出之前我们不关于比特币,以太坊数字货币未来猜想我是从今年年初开始关注比特币的,后来下载了火币,开始关注数字货币,年初的一波暴涨行情,吸引了无数的韭菜前来观摩,并梦想着有一天能够暴富,可惜,历史再次证明,暴富只是少数一部分人,无618路由器推荐网速不够快,很可能不是网络的问题hello,大家好,由于众所周知的原因,6。18是无机可装的,那么也只能玩玩手机了,这个时候,WIFI的作用就非常的大了,那么6。18我就推荐几款路由器吧,当然选购之前,总有那么几荣耀CEO赵明强调智慧屏坚持开关机无广告5月安卓手机好评榜公布科技犬荣耀智慧生活官方表示,荣耀智慧屏X1系列用五大标准与开关机无广告造就好产品。618开门红再夺销量冠军,6月5日6月6日荣耀智慧屏X165英寸版年度钜惠价2999元。荣耀终端有简单好用的入门机诺基亚C20Plus诺基亚的CXG三大系列手机,有着不同的特色,涵盖旗舰中端入门机C系列定义为简单好用的入门机,物美价廉,消费者可轻松入手智能手机,消费者能体验纯净安卓系统的智能手机。同时,诺基亚C系面对美制裁,中企霸气反击直接切断美供应链本文原创,禁止搬运和抄袭,违者必究!大洋彼岸的美国,总是喜欢大搞黑手,任凭心意在全球化的市场中指指点点,搅弄浑水。类似将外企拉入黑名单的例子太多了,又有消息传来,称国产科技巨头科大
继华为之后,又一手机企业开始注重科研,直接投入100亿元!4月10日消息,OPPO官微宣布,2019年,OPPO将围绕5GAI影像云新材料五大技术,投入超过100亿人民币用于研发,并且未来还将不断加大投入的力度。OPPO表示,2019年是三星发布新品,旋转三摄手机GalaxyA804800万像素中关村在线消息4月10日,三星今日晚上在泰国曼谷举办新品发布会,正式推出了GalaxyA系列中的旗舰产品GalaxyA80。该机最大亮点是采用了滑动旋转三摄像头设计,其中主摄像头像国民级软件要改名!手机淘宝正式成为历史了解更多热门资讯玩机技巧数码评测科普深扒,点击右上角关注我们的头条号雷科技,以及我们的微信公众号雷科技(IDleitech)和以PC为主要平台的互联网相比,移动互联网始终是后起之秀中国农业机器人专利申请量全球第一,智慧农业发展未来可期农业走向智能化和精准化的核心要素为农业传感器,重要产品为农业机器人。通过对农业传感器和农业机器人的专利技术分析,可以了解和掌握目前全球该重点领域的发展状况技术情况以及重点企业情况。快充会对电池造成损伤?专家不要频繁快充就行在购买新能源车时,可能大部分销售会提醒用户尽量采用慢充,少用快充,快充可能会对电池造成损伤。慢充耗时长,有利于电池健康。快充更为便捷,耗时短,但就会对电池寿命造成影响了么?对此,上报告美独角兽公司总市值达5820亿美元Uber以720亿美元估值居榜首本文来自全天候科技,阅读更多请登陆www。awtmt。com或华尔街见闻APP。作者刘荻青编辑罗丽娟4月10日消息,近日,普华永道和行业观察机构CBInsights联合发布Mone不止华为P30系列!4月11日全新MateBookXProMateBook14发布就在今天,华为平板和笔记本官方微博发布了一段名为碰然心动,让好事发生的博文,并配上了三张精心制作的长图海报。原来,这三张长图说的是HUAWEIShare一碰传功能给人们生活带来的便智能门锁火了,智能窗会成为下一个行业爆点么?门窗对于家庭来讲是现实意义的入口,近年来随着智能化技术的渗透,在门上做智能产品的厂家不计其数,智能门锁和智能猫眼已成为智能家居安全布防场景下的重要一环,而反观在窗上做智能化的厂家似格力新买主厚朴投资啥来头?曾牵手小米抄底蒙牛,涉22起投资作者市界秦海清编辑老拿继阿里京东富士康后,格力电器再曝新买主。4月10日,有媒体报道称,厚朴投资有意联合澳门一家金融投资公司参与此次格力国资股权受让,厚朴投资或已和珠海市国资委达成从3788元降至2868元,华为P30明天正式发布,上代旗舰加速让路近半个月的时间里,手机行业中被讨论最多的手机就是华为P30系列机型了,自从华为公司在国外发布这个新旗舰系列手机之后,整个行业中都被其最高50倍的变焦震惊到了,毕竟如今各大品牌手机的外交部想听听澳政府如何解释强制通信企业装后门4月10日,外交部发言人陆慷主持例行发布会。澎湃新闻(www。thepaper。cn)记者提问,近日,多家澳大利亚媒体报道称,由于澳通信和其他法律关于协助和准入的修正案2018强制