如何检验pfx和cer是不是一对

如果对keytool生成的密钥库的概念不清楚,对密钥库中存放的是什么不了解,可以看一下下面这篇文章,概念会清楚很多

本实例使用J2SDK提供的keytool工具用默认的密钥库和算法创建几个数字证书。

★运行程序keytool程序运行时加上命令行参数–genkey即可。
在命令行中输入“keytool   –genkey”将自动使用默认的算法生成公钥和私钥,并以交互方式获得公钥持有者的信息。其交互过程如下,其中带下划线的字符为用户键盘输入的内容,其他为系统提示的内容

以上操作将生成一个公钥和一个私钥,这里并未指定使用何算法,将使用默认的DSA算法。

University, L=ZB, ST=Guangzhou, C=CN”是X.500格式的全名,包含了主体的国家、州、城市、机构、单位和名字。这样,这个证书将证明相应的公钥是这个人或机构所拥有的。

以上生成的公钥、私钥和证书都保存在用户的主目录中创建一个默认的文件“.keystore”中。如果是Windows 2000系统,用户主目录是c:/ Documents and Setting/用户名。

由于“.keystore”中包含了私钥,所以是一个需要保密的文件,因此上述操作提示为该文件设置一个密码:“输入keystore密码”,这里因为是第一次使用该密钥库,因此输入的密码“123456”将成为该默认的密钥库的密码(实际使用时应该设置复杂的口令)。以后再使用这个密钥库时必须提供这个口令才可以使用。

以上操作最后还提示“输入的主密码”,这里“mykey”是默认的别名,使用该名字可以在密钥库“.keystore”中找到对应的公钥、私钥和证书。此处输入的密码是对应于该别名的私钥的密码,密钥库中每个别名可以使用不同的密码加以保护。

没有创建键值对,别名 已经存在”,因此当密钥库中有多个公钥/私钥对和证书时,应该使用别名。

★ 实例说明本实例使用J2SDK提供的keytool工具用在默认的密钥库中利用别名增加多个证书。

★运行程序keytool程序运行时加上命令行参数–alias即可。

password was incorrect”,这是因为1.1.1小节已经为默认的密钥库设置了该密码,以后使用该密钥库都必须提供该密码。

1.1.3 使用指定的算法和密钥库和有效期

1.1.1和1.1.2小节中使用的是默认的算法和密钥库,本节介绍如何自己指定算法和密钥库
★ 实例说明本实例使用J2SDK提供的keytool工具用RSA算法和在指定的密钥库mykeystore中创建公钥/私钥对和证书

keytool的keyalg参数可以指定密钥的算法,如果需要指定密钥的长度,可以再加上keysize参数。密钥长度默认为1024位,使用DSA算法时,密钥长度必须在512到1024之间,并且是64的整数倍

Keytool的-keystore参数可以指定密钥库的名称。密钥库其实是存放密钥和证书的文件,密钥库对应的文件如果不存在自动创建

-validity参数可以指定所创建的证书有效期是多少天

您的名字与姓氏是什么?

您的组织单位名称是什么?

您所在的城市或区域名称是什么?

您所在的州或省份名称是什么?

该单位的两字母国家代码是什么


(如果和 keystore 密码相同,按回车):

由于当前目录下没有mykeystore文件,因此以上操作将在当前目录建立文件名为mykeystore的文件,并提示输入一个密码加以保护:“输入keystore密码:”。因为这里使用的密钥库和1.1.1小节及1.1.2小节不是同一个文件,因此这里输入的密码和1.1.1小节及1.1.2小节没有必要一致,这里不妨设置为“wshr.ut”。这样,以后再使用这个密钥库文件时必须提供该密码

实例说明本实例使用J2SDK提供的keytool工具将指定的证书从密钥库导出为编码过和没编码过两种格式的文件。★运行程序使用keytool的export参数可以将别名指定的证书导出到文件,文件名通过file参数指定。如输入如下命令

则将默认密钥库中的liaoweimin2条目对应的证书导出到文件liaoweimin2.cer中。由于命令行中没有用storepass给出密码,因此屏幕提示输入keystore密码。由于证书中不包含私钥,因此不需要条目的主密码

该操作完成后将在当前目录中创建liaoweimin2.cer文件,该文件即是默认密钥库中的liaoweimin2条目对应的证书,它包含了公钥和主体的对应关系,内容也可以公开。
输入如下命令则可以指定密钥库

保存在文件中的认证 
该操作完成后将在当前目录中创建lf.cer文件

        如果用文本编辑器打开liaoweimin2.cer或lf.cer,将会发现它是二进制文件,有些内容无法显示,这不利于公布证书。在导出证书时加上-rfc参数则可以使用一种可打印的编码格式来保存证书。如

保存在文件中的认证 
则当前目录下将增加一个文件mytest.cer,其内容是编码过的,可以在屏幕上显示、拷贝或打印。如图5-2所示。(打印内容不同)

本实例使用J2SDK提供的keytool工具将1.2.3小节导出的证书文件显示出来。

★运行程序使用keytool的printcert参数可以将1.2.3小节导出到证书文件详细内容显示出来,文件名称通过file参数指定。如:

对编码过的证书可以同样显示,如:

1.2.3 在Windows中从文件显示证书★ 实例说明本实例在Windows中直接显示1.2.1小节导出的证书文件。


★运行程序1.2.3小节导出的证书文件中,只要文件名以.cer为后缀,Windows操作系统就可以直接识别。如在Windows中双击lf.cer图标,将出现窗口。其中包含了证书的所有者、颁发者、有效期等信息,这些信息和使用keytool显示出的信息一致。
由于该证书是用自己的私钥对该证书进行数字签名的,即自己给自己签发的证书,因此窗口中显示警告信息:“该证书发行机构根证书没受信任”。

1:最近在做电子发票的对接,里面有一个加密和解密的方法涉及到相关证书,后缀是cer和pfx的,在普通的java工程中测试通过,放到maven项目中始终报解密失败,最终查找后发现是maven编译的问题

查了一圈,没有得到好的解答,开始从原理入手,关于证书起始就是一个文件,不应该参与编译的,为什么会被编译,开始想到maven的编译,去查看java项目编译后和maven编译后的目录文件发现,maven编译后使得cer证书变大,导致解密失败


1:从原理入手,cer和pfx作为证书只是一个文件而已,不应该被编译,是在运行的时候再读取,所以应该把文件不放在这个项目里,比如一个配置平台,如果证书替换也方便,个人认为是最好的方案

build中阻止,相关配置如下:

现在很多网站都是用了ssl加密的https访问,而且现在网站不使用cdn的话简直是裸奔,但是目前用户最多的360网站卫士和腾讯云提供的免费配置ssl证书支持https访问功能都采取不一样格式的ssl证书。下面介绍一下支持在线转换证书格式的工具。(吐槽百度云加速不提供免费证书!)

作为文件形式存在的证书一般有这几种格式:

源格式选择【PEM】, 目标格式选择【PFX】, 证书文件选择【domain.crt】,即SSL证书文件, 私钥文件选择【key.txt】,即私钥Private Key, PFX格式密码【输入密码,非常重要】, 根证书文件选择【ca.crt】,即CA证书文件, 以上信息确认无误点击【转换证书格式】按钮

我要回帖

更多关于 cer转pfx 的文章

 

随机推荐