【问题标题】:SSL Implementation using java keytool使用 java keytool 实现 SSL
【发布时间】:2015-08-09 09:48:39
【问题描述】:

我使用 keytool 命令获得了 jks 类型的密钥库文件。现在我需要获得一个自签名证书来测试开发。我无法理解如何生成我尝试使用 keytool 命令的证书,但我遇到了“非法选项,找不到文件”之类的异常。那么,任何人都可以指定正确的方法吗?我关注了apacheSSLconfig 但我无法使用这些命令获取 .cer 文件。在此先感谢

【问题讨论】:

  • “找不到文件”看起来您可能指定了不正确的路径。您究竟做了什么?您的文件在哪里?
  • 是的,我明白我犯的错误谢谢

标签: java tomcat ssl


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    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 - 信任库密码

    【讨论】:

    • 谢谢,我完成了 1,2 步。是否也有必要实施第三步??因为我正在尝试使用自签名证书在本地测试我的应用程序。
    • 服务器/客户端应用程序需要第三步。客户端应该有信任库来连接服务器或其他客户端 SSL 服务。
    • 参考this
    • 如果你想在安卓应用中使用它,你需要服务器证书。对于浏览器,这不是强制性的,但您会收到一条警告消息,说他们不认识您。
    • @Grasshopper 谢谢。对于浏览器,您需要将证书添加到计算机中的受信任位置以避免此类警告消息。
    【解决方案3】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-26
      • 1970-01-01
      • 2018-03-07
      • 2011-04-17
      • 2018-07-14
      • 2022-06-11
      • 2012-05-06
      • 1970-01-01
      相关资源
      最近更新 更多