使用 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 对密钥库具有读取权限。
我使用 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 对密钥库具有读取权限。