使用 java keytool 实现 SSL

SSL Implementation using java keytool

我使用 keytool 命令获得了 jks 类型的密钥库文件。现在我需要获得一个自签名证书来测试开发。我无法理解如何生成我尝试使用 keytool 命令生成的证书,但我收到了 "illegal option, file not found" 之类的异常。那么,任何人都可以指定正确的方法吗?我已关注 apacheSSLconfig 但我无法使用这些命令获取 .cer 文件。提前致谢

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

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

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 - 要导出的证书名称(您可以指定要导出证书的位置的完整路径)
password - 密钥库密码

3.. 将证书导入信任库

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

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

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

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

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

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"/>

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