java - 如何创建用于 Apache Tomcat 的 X509 自签名证书

标签 java apache ssl openssl keytool

我有一个使用第 3 方 JVM 在 Windows Mobile 设备上运行的 Java 应用程序。该应用程序通过 HTTP 与 Apache Tomcat 服务器通信。我们还为某些连接使用了 HTTPS,证书是使用 Sun keytool 实用程序创建的。首先使用 genkey 创建一个 keystore ,然后使用 export 导出证书,最后使用 import 将其导入另一个 keystore 。由 genkey 创建的文件被加载到 Apache 服务器中,使用 import 创建的 keystore 被加载到 PDA 上的 JVM 中。一切都按预期进行。

我现在正在 PDA 上使用一个新的 JVM,并且(无论出于何种原因)我已经确定这个 JVM 要求 keystore 采用 X509 (DER) 格式。大约一个月前我开始研究这个并且让它工作,但愚蠢地从未写下我采取的步骤,现在我无法为我的生活记住我做了什么。我似乎记得使用 openssl 但除此之外我完全迷路了。我现在使用 openssl 创建并尝试加载到 Apache 中的任何内容都会在启动时导致错误(无效的 keystore 格式),所以我可能完全遗漏了一些东西。

有没有人知道我应该如何创建这个可以加载到 Apache 服务器和 PDA 上运行的 JVM 的自签名 X509 证书?

更新

我按照 Apache 的说明创建了自签名证书:

openssl req -new -x509 -nodes -out server.crt -keyout server.key

但是当我将 key 复制到 Apache conf 目录并启动时,出现异常:

java.io.IOException: invalid keystore format
    at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:633)
...

server.xml 文件包含以下 HTTPS 条目:

<Connector port="6969"
        protocol="HTTP/1.1"
            SSLEnabled="true"
                maxThreads="150"

                scheme="https"
                sslProtocol="TLS"
                secure="true"

                clientAuth="false"

                keystoreFile="./conf/server.key"
                keystorePass="password"

        ciphers="SSL_RSA_WITH_RC4_128_MD5"
    />

我猜 keystore 需要是 Java keystore 格式??但是我需要设备的证书为 x509 格式,所以我不确定该怎么做?

最佳答案

如果您已经在关注 instructions from apache ,那么您需要提供有关无效 keystore 格式的更多详细信息。

关于java - 如何创建用于 Apache Tomcat 的 X509 自签名证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2544293/

相关文章:

java - 数组实例化

java - Scala Lift - 将文件保存到 apache 中的目录

google-chrome - mailto 链接在 Chrome Gmail 中被阻止为不安全内容

php - 本地主机渲染页面很慢

javascript - 大量提供用户定制的脚本

ssl - 如何确保在 Active Directory 服务器上正确启用 SSL?

Azure 应用服务 - 无法通过指纹找到证书

java-facebook-api : is FB. Canvas.setAutoResize() 实现了吗?

java - Java 中类型安全的 map-reduce

java - 在 Maven 中重命名 groupId