2011-01-19 71 views
0

我正在将我的应用程序从HTTP移动到HTTPS,似乎遇到了问题。为JBoss 5.1.0设置HTTPS GA

这里是我做了什么,到目前为止基于关闭的these instructions

  1. 识别主机托管服务器的计算机。 I.e .:本地主机的这些指令
  2. 确定jBoss服务器类型(全部,默认,生产)。 I.e .:这些指令的ecotrak
  3. jBoss建议使用与keystore和trustore相同的文件。这将是server.keystore。在处女安装中,default/conf文件夹中应该没有server.keystore。如果有,请决定是删除它(使用这些说明)还是根据您的情况调整说明。
  4. 创建密钥库和私钥:
    • 打开命令提示符或shell并转到默认/ conf文件夹。
    • keytool -genkey -alias jbosskey -keypass changeit -keyalg RSA -keystore server.keystore
    • 回答提示。询问名字/姓氏时使用myHostname。这很关键。
    • server.keystore生成。
    • keytool -list -keystore server.keystore
    • 您应该在列表中看到名为jbosskey的PrivateKeyEntry。
  5. 生成并存储证书。
    • 密钥工具-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 server.keystore
    • 您应该在列表中看到一个名为jbosscert的TrustedCertEntry。

在我的服务器上。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) 

部署我N错误:

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

回答

3

运行网站,我按照上面的说明,并得到你报同样的错误。 我不明白您的更新,所以我写了一个批处理文件,在它下面:

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似乎正确启动了我。

感谢您的发布和更新。

1

该错误的另一个原因是密钥库使用高级加密。如果为真,则需要安装Java加密扩展,增加了Java加密级别支持

入住这JCE install mini-howto如何做到这一点(不是由于美国的出口规则,默认启用)。

的JCE为jre7是here。 对于那些仍在使用jre6的人,请检查这个link

2

在我的情况下,密钥库密码和别名密码是不同的。他们必须是相同的(至少在Tomcat中)。

相关问题