`
imshare
  • 浏览: 323994 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

不同格式证书导入keystore方法

    博客分类:
  • PKI
阅读更多
简介

Java自带的keytool工具是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。

keytool 将密钥和证书储存在一个所谓的密钥仓库(keystore)中。缺省的密钥仓库实现将密钥仓库实现为一个文件。它用口令来保护私钥。

Java KeyStore的类型

JKS和JCEKS是Java密钥库(KeyStore)的两种比较常见类型(我所知道的共有5种,JKS, JCEKS, PKCS12, BKS,UBER)。

JKS的Provider是SUN,在每个版本的JDK中都有,JCEKS的Provider是SUNJCE,1.4后我们都能够直接使用它。

JCEKS在安全级别上要比JKS强,使用的Provider是JCEKS(推荐),尤其在保护KeyStore中的私钥上(使用TripleDes)。

PKCS#12是公钥加密标准,它规定了可包含所有私钥、公钥和证书。其以二进制格式存储,也称为 PFX 文件,在windows中可以直接导入到密钥区,注意,PKCS#12的密钥库保护密码同时也用于保护Key。

BKS 来自BouncyCastle Provider,它使用的也是TripleDES来保护密钥库中的Key,它能够防止证书库被不小心修改(Keystore的keyentry改掉1个 bit都会产生错误),BKS能够跟JKS互操作,读者可以用Keytool去TryTry。

UBER比较特别,当密码是通过命令行提供的时候,它只能跟keytool交互。整个keystore是通过PBE/SHA1/Twofish加密,因此keystore能够防止被误改、察看以及校验。以前,Sun JDK(提供者为SUN)允许你在不提供密码的情况下直接加载一个Keystore,类似cacerts,UBER不允许这种情况。

证书导入

Der/Cer证书导入

要从某个文件中导入某个证书,使用keytool工具的-import命令:

keytool -import -file mycert.der -keystore mykeystore.jks


如果在 -keystore 选项中指定了一个并不存在的密钥仓库,则该密钥仓库将被创建。

如果不指定 -keystore 选项,则缺省密钥仓库将是宿主目录中名为 .keystore 的文件。如果该文件并不存在,则它将被创建。

创建密钥仓库时会要求输入访问口令,以后需要使用此口令来访问。可使用-list命令来查看密钥仓库里的内容:

keytool -list -rfc -keystore mykeystore.jks



P12格式证书导入:

keytool无法直接导入PKCS12文件。

第一种方法是使用IE将pfx证书导入,再导出为cert格式文件。使用上面介绍的方法将其导入到密钥仓库中。这样的话仓库里面只包含了证书信息,没有私钥内容。

第二种方法是将pfx文件导入到IE浏览器中,再导出为pfx文件。
       新生成的pfx不能被导入到keystore中,报错:keytool错误: java.lang.Exception: 所输入的不是一个 X.509 认证。新生成的pfx文件可以被当作keystore使用。但会报个错误as unknown attr1.3.6.1.4.1.311.17.1,查了下资料,说IE导出的就会这样,使用Netscape就不会有这个错误.

第三种方法是将pfx文件当作一个keystore使用。但是通过微软的证书管理控制台生成的pfx文件不能直接使用。keytool不认此格式,报keytool错误: java.io.IOException: failed to decrypt safe contents entry。需要通过OpenSSL转换一下:

1)openssl pkcs12 -in mycerts.pfx -out mycerts.pem

2)openssl pkcs12 -export -in mycerts.pem -out mykeystore.p12


通过keytool的-list命令可检查下密钥仓库中的内容:

keytool -rfc -list -keystore mykeystore.p12 -storetype pkcs12


这里需要指明仓库类型为pkcs12,因为缺省的类型为jks。这样此密钥仓库就即包含证书信息也包含私钥信息。

P7B格式证书导入:

keytool无法直接导入p7b文件。

需要将证书链RootServer.p7b(包含根证书)导出为根rootca.cer和子rootcaserver.cer 。

将这两个证书导入到可信任的密钥仓库中。

keytool -import -alias rootca -trustcacerts -file rootca.cer -keystore testkeytrust.jks


遇到是否信任该证书提示时,输入y

keytool -import -alias rootcaserver -trustcacerts -file rootcaserver.cer -keystore testkeytrust.jks



总结:

1)P12格式的证书是不能使用keytool工具导入到keystore中的

2)The Sun's PKCS12 Keystore对从IE和其他的windows程序生成的pfx格式的证书支持不太好.

3)P7B证书链不能直接导入到keystore,需要将里面的证书导出成cer格式,再分别导入到keystore。
分享到:
评论

相关推荐

    PFX格式证书和JAVA keyStore证书相互转换

    java 生成的有私钥的证书导入IE,或者把IE导出的证书导入java的KeyStore

    java keystore导出.pfx .key .crt 私钥

    首先,`.pfx`(Personal Information Exchange)文件是一种包含证书和私钥的二进制文件,广泛用于Windows系统中的SSL/TLS证书导入和导出。`.key`文件则通常代表私钥,而`.crt`(Certificate)文件则包含了公开的证书...

    PFX证书导入

    "PFX证书导入到USBKEY" PFX证书导入是指将PFX证书文件导入到USBKEY设备中,以便在USBKEY中存储和使用数字证书。PFX证书是一种常见的证书格式,包含了公钥、私钥和证书信息。 在PFX证书导入过程中,需要使用Windows...

    javakeytool支持的类型及如何将证书导入jks中.docx

    使用 P12 格式证书导入时,keytool 无法直接导入 PKCS12 文件。可以通过将 pfx 文件导入到 IE 浏览器中,再导出为 cert 格式文件,然后使用上面介绍的方法将其导入到密钥仓库中。或者将 pfx 文件当作一个 keystore ...

    java证书导入工具

    证书导入工具有助于将这些证书添加到Java的信任库,以便Java运行时能够识别并信任这些服务器。 首先,了解Java的信任库——cacerts。这是Java标准安装中自带的一个包含了根证书颁发机构(CA)的证书集合。当Java...

    客户端与服务器SSL双向认证(客户端:java-服务端:java)

    - 信任服务器证书:将服务器的证书导入到客户端的Truststore中,确保客户端信任该服务器。 - 配置KeyStore:将客户端证书和私钥放入KeyStore,设置相应的密码。 - 配置SSLContext:如同服务器端,使用...

    keystore_export导出密钥工具

    总之,keystore_export工具是Java开发环境中一个实用的辅助工具,帮助用户更高效地管理keystore中的密钥和证书,简化了在不同系统间迁移或共享密钥材料的过程。了解并正确使用这类工具对于任何涉及到数字证书和密钥...

    portecle keystore制作工具

    - **导入/导出**:可以导入已有的Keystore文件,或者将Keystore内容导出为其他格式。 - **生成密钥对**:在Keystore中生成RSA、DSA等类型的密钥对,用于SSL/TLS加密。 - **管理证书**:添加、删除或更新Keystore...

    把Https网站中的安全证书导入到java的cacerts证书库中

    - 然后,使用Java的`keytool`命令行工具将证书导入到cacerts。`keytool`是Java SDK自带的工具,用于管理密钥对和证书库。 - 最后,指定cacerts文件的位置(通常在JDK安装目录下的`lib/security`目录下),运行`...

    Android签名文件jks和keystore相互装换.zip

    除了转换,`keytool`还可以用于查看密钥信息、导入或导出证书、创建新的密钥对等操作。例如,你可以使用`-list`参数查看Keystore中的密钥信息: ```bash keytool -list -v -keystore myapp.keystore ``` 这个过程中...

    KeyStore Explorer.zip

    4. 导入证书:将CA签发的证书导入到KeyStore中。 5. 配置服务器:将KeyStore文件路径、密钥别名和密码配置到服务器的SSL配置文件中。 通过KeyStore Explorer,用户可以更直观地完成这些步骤,无需深入理解复杂的...

    keystoke证书转换nginx证书工具

    标题提到的"keystoke证书转换nginx证书工具"是一个帮助管理员处理SSL/TLS证书的实用程序,特别针对从Java的`keytool.exe`生成的`.keystore`格式证书进行转换。`keytool`是Java Development Kit (JDK) 自带的一个...

    kse-543.dmg keystore-explorer: 5.4.3

    广泛的格式支持KeyStore Explorer支持多种KeyStore,密钥对,私钥和证书格式,并可在它们之间进行转换。请参阅功能,以获取受支持格式的列表。 CA的基本功能KeyStore Explorer可以用于创建自己的CA证书并使用它签名...

    keystore_oracle_

    而`keystore.crt`则很可能是已经导出的证书文件,用于在不同的系统之间分享或导入到Keystore中。 综上所述,"keystore_oracle_"的主题涵盖了Oracle数据库的SSL和Keystore管理,这是数据库管理员和安全专业人员必须...

    KeyStore私钥及证书导出,可命令行直接用[2013-11]

    `keytool`是JDK自带的工具,用于创建、管理和查询KeyStore,包括导入和导出证书以及生成私钥对。私钥是加密过程中用于解密的密钥,而证书通常包含了公钥和发布者的相关信息,用于验证公钥的合法性。在SSL/TLS、数字...

    keystore秘钥文件

    - **导入/导出**:可以使用`keytool`将证书导入到`keystore`,或将`keystore`中的密钥对导出为单独的文件。 - **更新**:如果需要更改`keystore`中的信息,如更新密钥口令或添加新的密钥对,也可以通过`keytool`...

    通过秘密键/证明书/CA证明书生成keystore文件

    5. **导入CA证书**:如果使用了CA签名的证书,还需将CA的根证书导入keystore,以信任由该CA签发的其他证书。 6. **配置应用**:最后,将keystore文件配置到你的应用程序(如Web服务器或Java应用)中,以便进行SSL/...

    导出JVM KeyStore中私钥的Java程序

    在Java环境中,keytool是用于管理KeyStore的命令行工具,可以进行证书的创建、导入、导出等操作。本文将详细讲解如何使用Java程序导出JVM KeyStore中的私钥,以及这个过程在配置SSL(Secure Sockets Layer)时的作用...

    java keytool安全证书学习

    `keytool -import -alias serverkey -file server.crt -keystore tclient.keystore`将服务器的公钥证书导入到客户端的TrustStore文件`tclient.keystore`,使得客户端信任这个服务器。 4. **客户端私钥和证书处理**...

Global site tag (gtag.js) - Google Analytics