Tomcat 为JBoss 5.1.0 GA设置HTTPS

Tomcat 为JBoss 5.1.0 GA设置HTTPS,tomcat,https,jboss5.x,Tomcat,Https,Jboss5.x,我正在将我的应用程序从HTTP移动到HTTPS,似乎遇到了问题 以下是我迄今为止在以下方面所做的工作: 标识承载服务器的计算机的主机名。例如:localhost以获取这些说明 确定jBoss服务器类型(全部、默认、生产)。即:ecotrak获取这些说明 jBoss建议使用与keystore和trustore相同的文件。这将是server.keystore。在virgin安装中,default/conf文件夹中不应有server.keystore。如果您有一个,您必须决定是删除它(使用这些说明),

我正在将我的应用程序从HTTP移动到HTTPS,似乎遇到了问题

以下是我迄今为止在以下方面所做的工作:

  • 标识承载服务器的计算机的主机名。例如:localhost以获取这些说明
  • 确定jBoss服务器类型(全部、默认、生产)。即:ecotrak获取这些说明
  • jBoss建议使用与keystore和trustore相同的文件。这将是server.keystore。在virgin安装中,default/conf文件夹中不应有server.keystore。如果您有一个,您必须决定是删除它(使用这些说明),还是调整说明以适应您的情况
  • 创建密钥库和私钥:
    • 打开命令提示符或shell并转到默认的/conf文件夹
    • keytool-genkey-alias jbosskey-keypass changeit-keyalg RSA-keystore server.keystore
    • 回答提示。当要求输入名字/姓氏时,请使用myHostname。这是至关重要的
    • 已生成server.keystore
    • keytool-list-keystore服务器.keystore
    • 您应该在清单中看到名为jbosskey的PrivateKeyEntry
  • 生成和存储证书。
    • keytool-export-alias jbosskey-keypass changeit-file server.crt-keystore server.keystore
    • 生成server.crt
    • keytool-import-alias jbosscert-keypass changeit-file server.crt-keystore server.keystore
    • 您将收到一条警告,指出它已存在于密钥库中。别理它。这是因为Java需要单独的密钥库和信任库文件,而我们只使用一个
    • keytool-list-keystore服务器.keystore
    • 您应该在清单中看到一个名为jbosscert的TrustedCertEntry
  • 在my server.xml中,我有以下内容:

      <!-- SSL/TLS Connector configuration using the admin devl guide keystore-->
      <Connector protocol="HTTP/1.1" SSLEnabled="true" 
           port="8443" address="${jboss.bind.address}"
           scheme="https" secure="true" clientAuth="false" 
           keystoreFile="C:/dev/server/jboss-5.1.0.GA/server/ecotrak/conf/server.keystore"
           keystorePass="password" sslProtocol = "TLS" keyAlias="jbosskey" />
    
     call %JBOSS_HOME%\bin\run.bat -c default -b 0.0.0.0 -Djavax.net.ssl.trustStore=C:/dev/server/jboss-5.1.0.GA/server/ecotrak/conf/server.keystore
    
    以下是我在日志文件中得到的信息:

    00:09:03,110 INFO [AprLifecycleListener] The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\dev\jdk\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\dev\jdk\jre\bin;native
    
    00:09:03,197 INFO [Http11Protocol] Initializing Coyote HTTP/1.1 on http-localhost%2F127.0.0.1-8080
    
    00:09:03,214 INFO [AjpProtocol] Initializing Coyote AJP/1.3 on ajp-localhost%2F127.0.0.1-8009
    
    00:09:03,261 ERROR [Http11Protocol] Error initializing endpoint
    
    java.io.IOException: Cannot recover key
    
    at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:456)
    
    at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:139)
    
    日志的另一部分

    00:09:03,265 ERROR [AbstractKernelController] Error installing to Start: name=WebServer state=Create
    
    LifecycleException: Protocol handler initialization failed: java.io.IOException: Cannot recover key
    
    at org.apache.catalina.connector.Connector.initialize(Connector.java:1031)
    
    at org.apache.catalina.core.StandardService.initialize(StandardService.java:683)
    
    错误的部署:

    Deployment "WebServer" is in error due to the following reason(s): LifecycleException: Protocol handler initialization failed: java.io.IOException: Cannot recover key
    
    Deployment "jboss.web:service=WebServer" is in error due to the following reason(s): ** NOT FOUND Depends on 'jboss.web:service=WebServer' **
    
    对这里发生的事情有什么想法吗


    更新


    我发现了我的错误-我混淆了密钥库和证书之间的密码。修复后,我现在可以在HTTPS下运行该站点。我按照上面的说明操作,得到了与您报告的相同的错误。 我不理解您的更新,因此我编写了一个批处理文件,其中包含以下内容:

    c:
    cd "/opt/fg/jboss-5.1.0.GA/server/default/conf"
    REM create the server.keystore file - will fail if it already exists
    keytool -genkey -alias jbosskey -keypass changeit -keyalg RSA -keystore server.keystore -storepass changeit -dname "CN=localhost, OU=MY_DEPARTMENT, O=MY_COMPANY, L=MY_CITY, S=MY_STATE, C=US"
    
    REM display what was made
    keytool -list -keystore server.keystore -storepass changeit
    
    REM generate and store the certificate 
    keytool -export -alias jbosskey -keypass changeit -file server.crt -keystore server.keystore -storepass changeit
    
    keytool -import -alias jbosscert -keypass changeit -file server.crt -keystore server.keystore -storepass changeit
    
    REM display what was made
    keytool -list -keystore server.keystore -storepass changeit
    
    这样做有助于我了解所有密码的设置位置。最初,我没有阅读就复制并粘贴了这些命令。我没有注意到一些命令中嵌入了密码。突然间,你更新的帖子对我来说更有意义了

    对于其他有同样问题的人,任何时候,你都可以在我写的bat文件中看到“changeit”,将其更改为你的密码

    您还需要更改上面脚本中的计算机名称、部门、组织、州和国家

    现在JBoss对我来说似乎启动正确


    感谢您的帖子和更新。

    我按照上面的说明操作,得到了与您报告的相同的错误。 我不理解您的更新,因此我编写了一个批处理文件,其中包含以下内容:

    c:
    cd "/opt/fg/jboss-5.1.0.GA/server/default/conf"
    REM create the server.keystore file - will fail if it already exists
    keytool -genkey -alias jbosskey -keypass changeit -keyalg RSA -keystore server.keystore -storepass changeit -dname "CN=localhost, OU=MY_DEPARTMENT, O=MY_COMPANY, L=MY_CITY, S=MY_STATE, C=US"
    
    REM display what was made
    keytool -list -keystore server.keystore -storepass changeit
    
    REM generate and store the certificate 
    keytool -export -alias jbosskey -keypass changeit -file server.crt -keystore server.keystore -storepass changeit
    
    keytool -import -alias jbosscert -keypass changeit -file server.crt -keystore server.keystore -storepass changeit
    
    REM display what was made
    keytool -list -keystore server.keystore -storepass changeit
    
    这样做有助于我了解所有密码的设置位置。最初,我没有阅读就复制并粘贴了这些命令。我没有注意到一些命令中嵌入了密码。突然间,你更新的帖子对我来说更有意义了

    对于其他有同样问题的人,任何时候,你都可以在我写的bat文件中看到“changeit”,将其更改为你的密码

    您还需要更改上面脚本中的计算机名称、部门、组织、州和国家

    现在JBoss对我来说似乎启动正确


    感谢您的帖子和更新。

    该错误的另一个原因是密钥库使用的是高级加密。如果为true,则需要安装Java加密扩展以增加Java加密级别支持(由于美国的导出规则,默认情况下不启用)

    检查此项如何执行此操作

    jre7的JCE是。
    对于仍在使用jre6的用户,请检查此项。

    该错误的另一个原因是密钥库正在使用高级加密。如果为true,则需要安装Java加密扩展以增加Java加密级别支持(由于美国的导出规则,默认情况下不启用)

    检查此项如何执行此操作

    jre7的JCE是。
    对于仍在使用jre6的用户,请检查此项。

    在我的示例中,密钥库密码和别名密码是不同的。它们必须是相同的(至少在Tomcat中是相同的)。

    在我的例子中,密钥库密码和别名密码是不同的。它们必须是相同的(至少在Tomcat中)