我在ActiveMQ配置中有这个:
<sslContext>
<sslContext keyStore="file:/home/alex/work/amq/broker.ks"
keyStorePassword="password" trustStore="file:${activemq.base}/conf/broker.ts"
trustStorePassword="password"/>
</sslContext>
我有一对X.509证书和一个密钥文件。
我如何导入这两个,以便在SSL和SSL+stomp连接器中使用它们?所有的例子,我总能自己生成键,但我已经有一个键了。
我试过了
keytool -import -keystore ./broker.ks -file mycert.crt
但这只导入证书,而不导入密钥文件,并导致
2009-05-25 13:16:24,270 [localhost:61612] ERROR TransportConnector - Could not accept connection : No available certificate or key corresponds to the SSL cipher suites which are enabled.
我已经尝试连接证书和密钥,但得到相同的结果。
如何导入密钥?
如果您在单个.pem文件中收到了组合的证书和密钥,就像MongoDB Atlas的身份验证一样,那么,
使用文本编辑器打开pem文件,将其拆分为两个文件,例如cert.pem和key。Pem(你可以在文件中很清楚地进行分割),然后使用openssl命令创建一个单独的p12格式文件,如下所示:
openssl pkcs12 -export -out server.p12 -name test\
-in cert.pem -inkey key.pem
我使用的是Java 8,至少在Java 8或更高版本中,生成的p12 (server.p12)现在是keystore文件,因此如果不需要向它添加任何certs,您可以直接使用它,而不需要使用keytool。
前面的回答正确地指出,您只能使用标准JDK工具,首先将JKS文件转换为PKCS #12格式。如果您感兴趣,我整理了一个紧凑的实用程序,可以将openssl派生的密钥导入到jks格式的密钥存储库中,而不必首先将密钥存储库转换为PKCS #12: http://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art049
你可以像这样使用链接的实用程序:
$ openssl req -x509 -newkey rsa:2048 -keyout localhost.key -out localhost.csr -subj "/CN=localhost"
(签署CSR,返回localhost.cer)
$ openssl rsa -in localhost.key -out localhost.rsa
Enter pass phrase for localhost.key:
writing RSA key
$ java -classpath . KeyImport -keyFile localhost.rsa -alias localhost -certificateFile localhost.cer -keystore localhost.jks -keystorePassword changeit -keystoreType JKS -keyPassword changeit
使用Let's Encrypt证书
假设您已经在/etc/letsencrypt/live/you.com中使用Let's Encrypt创建了您的证书和私钥:
1. 创建一个PKCS #12文件
openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out pkcs.p12 \
-name letsencrypt
这将结合您的SSL证书全链。Pem和您的私钥privkey。Pem到一个文件,pkcs.p12。
系统将提示您输入pkcs.p12的密码。
导出选项指定将创建PKCS #12文件,而不是解析(根据手册)。
2. 创建Java密钥库
keytool -importkeystore -destkeystore keystore.jks -srckeystore pkcs.p12 \
-srcstoretype PKCS12 -alias letsencrypt
如果密钥存储库。JKS不存在,它将包含pkcs被创建。12文件创建上面。否则,您将导入pkcs。12到现有的密钥存储库中。
这些说明来自本博客上的文章“从Let’s Encrypt Certificates创建Java密钥存储库(. jks)”。
这里有更多关于/etc/letsencrypt/live/ u.com/中不同类型文件的信息。