java socket pem证书_关于ssl:将PEM导入Java密钥存储区

我正在尝试连接到SSL服务器,这需要我进行身份验证。 为了在Apache MINA上使用SSL,我需要一个合适的JKS文件。 但是,仅给我一个.PEM文件。

如何从PEM文件创建JKS文件?

可能该链接会有所帮助:http://www.agentbob.info/agentbob/79-AB.html

首先,将您的证书转换为DER格式:

openssl x509 -outform der -in certificate.pem -out certificate.der

然后,将其导入密钥库中:

keytool -import -alias your-alias -keystore cacerts -file certificate.der

你的为我工作,其他人没有。

如果.pem文件包含多个证书,则无法使用。

香港专业教育学院只有一个证书。pem,这是行不通的。 1795:错误:0906D06C:PEM例程:PEM_read_bio:无起始行:/ usr / src / secure / lib / libcrypto /../../../ crypto / openssl / crypto / pem / pem_lib.c:648:正在检查:可信证书

@Brian Knoblauch错误有解决方案吗?

我找到了解决方案。将根证书和中间证书预先附加到.pem,然后进行转换。

@Anthony此命令仅告诉如何将PEM导入JKS。添加从商店导出JKS的命令可能是一个好主意。

如果.pem上有多个证书,如何导入Java密钥库?

如果您只想将PEM格式的证书导入密钥库,则keytool将完成此工作:

keytool -import -alias *alias* -keystore cacerts -file *cert.pem*

如果我这样走,我得到一个错误:keytool错误:java.lang.Exception:输入的不是X.509证书

如果它确实是X.509格式的证书,则该命令正在起作用...

@frandevel,此错误可能是由于PEM输入文件的标题高于--- BEGIN分隔符或在一个文件中包含多个PEM或两者引起的。要么一次删除所有无关的数据,然后一次输入每个PEM,要么使用我的工具,如我的答案中所述。

谢谢@Fuzzyfelt,虐待看一下

同样的问题,.PEM文件干净,带有所有适当的头。

我已经开发了http://code.google.com/p/java-keyutil/,可将PEM证书直接导入Java密钥库中。其主要目的是导入多部分PEM操作系统证书捆绑包,例如ca-bundle.crt。这些通常包括keytool无法处理的标头

这不是一个不好的玩具项目,但是keytool已经为您(以及更多)完成了所有这一切。 (顺便说一句,如果发生异常,则应该关闭FileOutputStream,并关闭finally中的I / O流。)

嗨,布鲁诺,谢谢你的提示。真正的用例是一次性导入/etc/pki/tls/certs/ca-bundle.crt(RHEL / CentOS)的所有条目。 AFAIK,keytool将仅导入第一个条目。我已经看到许多人以不同的方式执行此操作,但是通常涉及为每个证书多次调用keytool。 Ubuntu有一个完全可以执行此操作的更新脚本,只是Ubuntu将其证书存储在目录中。在不久的将来会增加对目录的支持。再次感谢您检查代码。

在我的情况下,我有一个pem文件,其中包含两个证书和一个用于相互SSL身份验证的加密私钥。

所以我的pem文件看起来像这样:

-----BEGIN CERTIFICATE-----

...

-----END CERTIFICATE-----

-----BEGIN RSA PRIVATE KEY-----

Proc-Type: 4,ENCRYPTED

DEK-Info: DES-EDE3-CBC,C8BF220FC76AA5F9

...

-----END RSA PRIVATE KEY-----

-----BEGIN CERTIFICATE-----

...

-----END CERTIFICATE-----

这是我所做的

将文件分成三个单独的文件,以便每个文件仅包含一个条目,

以---BEGIN..开头并以---END..行结尾。假设现在有三个文件:cert1.pem,cert2.pem和pkey.pem。

使用openssl和以下语法将pkey.pem转换为DER格式:

openssl pkcs8 -topk8 -nocrypt -in pkey.pem -inform PEM -out pkey.der -outform DER

请注意,如果私钥已加密,则需要提供密码(从原始pem文件的供应商处获取)以转换为DER格式,

openssl将询问您这样的密码:"输入pkey.pem的密码:"。

如果转换成功,您将获得一个名为pkey.der的新文件。

创建一个新的Java密钥库并导入私钥和证书:

String keypass ="password";  // this is a new password, you need to come up with to protect your java key store file

String defaultalias ="importkey";

KeyStore ks = KeyStore.getInstance("JKS","SUN");

// this section does not make much sense to me,

// but I will leave it intact as this is

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值