使用javakeytool实现SSL

使用javakeytool实现SSL,java,tomcat,ssl,Java,Tomcat,Ssl,我使用keytool命令获得了jks类型的密钥库文件。现在我需要获得一个自签名证书,以便在开发时进行测试。我无法理解如何使用keytool命令生成证书,但遇到了“非法选项,未找到文件”之类的异常。那么,有人能指定正确的方法吗?我跟着 但是我无法使用这些命令获取.cer文件。提前感谢您生成自签名证书,您可以按照说明执行keytool-genkey。然后,如果您希望证书保存在cer文件中,可以使用keytool-exportcert将其导出 例如: keytool -exportcert -keys

我使用keytool命令获得了jks类型的密钥库文件。现在我需要获得一个自签名证书,以便在开发时进行测试。我无法理解如何使用keytool命令生成证书,但遇到了“非法选项,未找到文件”之类的异常。那么,有人能指定正确的方法吗?我跟着
但是我无法使用这些命令获取.cer文件。提前感谢您生成自签名证书,您可以按照说明执行keytool-genkey。然后,如果您希望证书保存在cer文件中,可以使用keytool-exportcert将其导出 例如:

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

1创建密钥库

keytool -genkey -alias name1 -keyalg RSA -keystore name1.keystore -storepass password -keypass keypassword -storetype JKS -keysize 1024
keytool -export -alias name1 -keystore name1.keystore -rfc -file name1.cert -storepass password
keytool -import -alias name1 -file name1.cert -keystore name1.TrustStore -storepass truststorepassword
name1
-别名(您可以提供自己的别名)
name1.keystore
-要创建的keystore文件名(您可以指定位置,如c:\name1.keystore)
密码
-密钥库密码
keypassword
-密钥库密钥密码(私钥)

二,出口证书

keytool -genkey -alias name1 -keyalg RSA -keystore name1.keystore -storepass password -keypass keypassword -storetype JKS -keysize 1024
keytool -export -alias name1 -keystore name1.keystore -rfc -file name1.cert -storepass password
keytool -import -alias name1 -file name1.cert -keystore name1.TrustStore -storepass truststorepassword
name1.密钥库
-密钥库位置
name1.cert
-要导出的证书名称(您可以指定要导出证书的完整路径)
密码
-密钥库密码

3将证书导入信任库

keytool -genkey -alias name1 -keyalg RSA -keystore name1.keystore -storepass password -keypass keypassword -storetype JKS -keysize 1024
keytool -export -alias name1 -keystore name1.keystore -rfc -file name1.cert -storepass password
keytool -import -alias name1 -file name1.cert -keystore name1.TrustStore -storepass truststorepassword
name1.cert
-步骤中之前导出的证书的位置
name1.信任库
-信任库名称(可以指定完整路径)

truststorepassword
-信任存储密码

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

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
keytool-exportcert-keystore/path/to/keystore.jks-storepass-alias selfsigned-file./name.cer
如前所述。但是你不需要。按照Tomcat文档中的说明,您只需创建密钥库并通过编辑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的用户对密钥库具有读取权限。

“未找到文件”看起来您可能指定了不正确的路径。你到底做了什么?你的文件在哪里?是的,我理解我犯的错误,谢谢,我只做了1,2步。是否也需要实现第三步??,因为我正在尝试使用自签名证书在本地测试我的应用程序。第三步对于服务器/客户端应用程序是必需的。客户端应具有truststore以连接服务器或其他客户端SSL服务。如果要在android应用程序中使用服务器证书,请参阅。对于浏览器来说,这不是强制性的,但你会收到一条biiig警告消息,说他们不认识你。@Grasshopper,谢谢。对于浏览器,您需要将证书添加到计算机中的受信任位置,以避免此类警告消息。