2011-01-19 16 views
0

私のアプリをHTTPからHTTPSに移行中で、問題が発生しているようです。ここでJBoss 5.1.0用にHTTPSを設定するGA

は、私がこれまでthese instructionsのオフに基づいてやっていることです:

  1. サーバーをホストしているコンピュータのホスト名を特定します。これらの指示のためのローカルホスト
  2. jBossサーバータイプ(すべて、デフォルト、プロダクション)を特定します。これらの指示のためのecotrak
  3. jBossは、キーストアとトラストアの両方と同じファイルを使用することをお勧めします。これはserver.keystoreになります。バージンインストールでは、default/confフォルダにserver.keystoreが存在しないはずです。あなたが持っている場合、それを削除するか(これらの指示を使用するか)、またはあなたの状況に合わせて指示を適応させるかどうかを決める必要があります。
  4. キーストアと秘密鍵の作成:
    • コマンドプロンプトまたはシェルを開き、デフォルトの/ confフォルダに移動します。
    • keytool -genkey -alias jbosskey -keypass changeit -keyalg RSA -keystore server.keystore
    • プロンプトに答えます。姓名の入力が求められたら、myHostnameを使用します。これは非常に重要です。
    • server.keystoreが生成されます。
    • keytool -list -keystore server.keystore
    • リスティングにjbosskeyという名前のPrivateKeyEntryが表示されます。
  5. 証明書の生成と保存。
    • の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が別々のkeystoreおよびtrustownファイルを必要とし、我々は1つだけを使用しているからです。
    • keytool -list -keystore server.keystore
    • リストには、jbosscertという名前のTrustedCertEntryが表示されます。

私のサーバーにあります。私が起動すると

<!-- 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" /> 

を私は次のようしているサーバー:私は、次の持つXML

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) 

デプロイメントI NのERROR:ここで何が起こっているかについての

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

このエラーのもう1つの理由は、キーストアが高度な暗号化を使用していることです。 trueの場合、Java暗号化レベルのサポートを増やすにはJava Cryptography Extensionをインストールする必要があります(米国の輸出ルールのためデフォルトでは有効になりません)。

これをチェックする方法は?JCE install mini-howto

jre7のJCEはhereです。 まだjre6を使用している人は、linkにチェックを入れてください。

2

私のケースでは、キーストアパスワードとエイリアスパスワードが異なっていました。彼らはと同じでなければなりません(少なくともTomcatでは)。

関連する問題