使用java keytool实现SSL

时间:2015-05-27 10:46:20

标签: java tomcat ssl

我使用keytool命令获取了jks类型的密钥库文件。现在我需要获得一个自签名证书来测试开发。我无法理解如何生成使用keytool命令尝试的证书,但我得到的例外情况是"非法选项,找不到文件" 。那么,任何人都可以指定正确的方法吗?我跟着apacheSSLconfig 但我无法使用这些命令获取.cer文件。提前致谢

3 个答案:

答案 0 :(得分:1)

1 .. 创建密钥库

keytool -genkey -alias name1 -keyalg RSA -keystore name1.keystore -storepass password -keypass keypassword -storetype JKS -keysize 1024

name1 - 别名(您可以提供自己的别名)
name1.keystore - 要创建的密钥库文件名(您可以指定位置,如c:\ name1.keystore)
password - 密钥库密码
keypassword - 密钥库密钥密码(私钥)

2 .. 出口证明

keytool -export -alias name1 -keystore name1.keystore -rfc -file name1.cert -storepass password

name1.keystore - 密钥库位置
name1.cert - 要导出的证书名称(您可以指定xport证书的完整路径)
password - 密钥库密码

3 .. 将证书导入Truststore

keytool -import -alias name1 -file name1.cert -keystore name1.TrustStore -storepass truststorepassword

name1.cert - 在步骤之前导出的证书的位置。
name1.TrustStore - 信任库名称(可以指定完整路径)
truststorepassword - 信任商店密码

答案 1 :(得分:1)

首先,您必须了解keytool处理java密钥库文件,这是证书和密钥(see this post)的Oracle容器格式。请注意,密钥库中的每个条目都有一个操作密钥库时必须引用的别名。所以当你跑:

keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048

您基本上创建了一个密钥库,其中包含一个自签名证书别名为“自签名”#39;。如果您需要实际的证书文件,可以使用以下命令从密钥库中导出:

keytool -exportcert -keystore  /path/to/keystore.jks -storepass <password> -alias selfsigned -file ./name.cer

如前所述。但你不需要。按照Tomcat文档中Configuration section中的说明,您只需创建密钥库并配置服务器以通过编辑NIO连接器来使用它:

<Connector
       protocol="org.apache.coyote.http11.Http11NioProtocol"
       port="8443" maxThreads="200"
       scheme="https" secure="true" SSLEnabled="true"
       keystoreFile="path/to/keystore.jks" keystorePass="<the password>"
       clientAuth="false" sslProtocol="TLS"/>

确保运行Tomcat的用户对密钥库具有读取权限。

答案 2 :(得分:0)

要生成自签名证书,请按照here说明执行keytool -genkey。然后,如果您想在cer文件中使用证书,可以使用keytool -exportcert导出它 例如:

keytool -exportcert -keystore  /path/to/keystore.jks -storepass <password> -alias <name> -file ./name.cer