2011-06-30 20 views
9

ローカルのTomcat 6インストールでSSLを設定しようとしています。このために、私は公式How-Toは、次の操作を行って、その後:Tomcat 6でSSLを使用したキーストア形式が正しくありません

$JAVA_HOME/bin/keytool -genkey -v -keyalg RSA -alias 
      tomcat -keypass changeit -storepass changeit 
$JAVA_HOME/bin/keytool -export -alias tomcat -storepass 
      changeit -file /root/server.crt 

が続い/ server.xmlの$のCATALINA_BASE/confにを変更するに-コメントこの:Tomcatを起動した後

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
      maxThreads="150" scheme="https" secure="true" 
      clientAuth="false" sslProtocol="TLS" 
      keystoreFile="/root/.keystore" keystorePass="changeit" /> 

を、私はこれを取得例外:

INFO: Initializing Coyote HTTP/1.1 on http-8080 
30.06.2011 10:15:24 org.apache.tomcat.util.net.jsse.JSSESocketFactory getStore 
SCHWERWIEGEND: Failed to load keystore type JKS with path /root/.keystore 
due to Invalid keystore format 
java.io.IOException: Invalid keystore format 
     at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:633) 
     at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:38) 
     at java.security.KeyStore.load(KeyStore.java:1185) 

私はkeytool -listをキーストアに見たとき、私は

取得
[email protected]:~# $JAVA_HOME/bin/keytool -list 
Enter key store password: changeit 
Key store type: gkr 
Key store provider: GNU-CRYPTO 

Key store contains 1 entry(ies) 

Alias name: tomcat 
Creation timestamp: Donnerstag, 30. Juni 2011 - 10:13:40 MESZ 
Entry type: key-entry 
Certificate fingerprint (MD5): 6A:B9:...C:89:1C 

明らかに、キーストアタイプは異なります。どのようにタイプを変更できますか?これで問題は解決しますか?ありがとうございました!

答えて

13

これは、Oracle/Sunのか、OpenJDKのから1、GNU implementationをいない使用しているkeytoolのように見えます。 keytool -listの出力からは、ストアタイプが生成されます。これはGNU Keyring Storeです。

Apache TomcatをOpenJDKまたはSun/Oracle JREを使用して実行するかどうかはわかりません。その場合、この形式は追加のセキュリティプロバイダなしではサポートされません。

あなたはgkr(あなたがgkrをサポートしているセキュリティプロバイダを追加したか、少なくともJRE)をサポートGNU JRE ApacheとTomcatを実行した場合、あなたはあなたの<Connector />構成でkeystoreType="gkr"を試すことができます。

ただし、もっとも簡単なのは、OracleまたはOpenJDKで提供されるkeytoolを使用し、JKSストアタイプ(OpenJDKまたはSun/Oracle JREでApache Tomcatを実行する場合はデフォルトタイプ)を使用するのが最も簡単です。あなたのJREにはおそらくインストールされていましたが、使用している$JAVA_HOMEのようには表示されません.OracleまたはOpenJDK JAVA_HOMEです。いくつかのLinuxディストリビューションには、複数のJREをインストールしてリンクを設定する仕組みがあります(Debian/Ubuntuファミリのupdate-alternatives)。

(サイドノートとして、通常はrootとしてApache Tomcatを実行することをお勧めしていない、$HOME/.keystoreはあなたの例では/root/.keystoreあるので、あなたがやっているように見えるいる。)

+0

あなたの答えは本当にありがとうございます:-)ユーザーがTomcatを実行する必要があるいくつかの小さな質問があります。このkeytool-stuffを知るには?これは、私のコンピュータ上に非常に多くの異なるバージョンがあると思う最後のものでしょうか?最後に、上記のコマンドで.keystoreとserver.crtを作成しました。 Tomcatは完全に起動しますが、ブラウザは依然として証明書が信頼できないと言います...私はあなたにいくつかの点を与えるために奨励金を作成します:-) – strauberry

+1

複数のJavaインストールを設定するには、[update-java-alternatives] (http://wiki.debian.org/Java/Sun)。 Debianパッケージを使ってTomcatをインストールしたようですので、おそらく 'tomcat'または' tomcat6'ユーザが作成されました。 '/ etc/init.d/tomcat6'スクリプトがあり、このユーザのもとでTomcatを起動/停止する必要があります。 '/ usr/share/doc/tomcat6/README.Debian.gz'にはこれに関する詳しい情報があります。 – Bruno

+0

サーバ証明書については、自己署名しているので、使用しているブラウザで手動で証明書をインポートする必要があります。手動で例外を追加するか(発行した '.crt 'と一致するか確認できます。 'openssl x509 -text -noout -in server.crt'など)を使用するか、' server.crt'ファイルをブラウザに直接インポートしてください。 – Bruno

1

ブルーノは、私が「間違っを使用し、言ったように"キーツール!

それらkeytoolsが私のDebian 6のインストール

[email protected]:~# locate keytool 
/etc/alternatives/keytool 
/etc/alternatives/keytool.1.gz 
/root/glassfish3/jdk/bin/keytool 
/root/glassfish3/jdk/jre/bin/keytool 
/root/glassfish3/jdk/man/ja_JP.eucJP/man1/keytool.1 
/root/glassfish3/jdk/man/man1/keytool.1 
/root/glassfish3/mq/bin/imqkeytool 
/root/glassfish3/mq/bin/imqkeytool.exe 
/usr/bin/gkeytool 
/usr/bin/gkeytool-4.4 
/usr/bin/keytool 
/usr/bin/jre1.6.0_25/bin/keytool 
/usr/bin/jre1.6.0_25/man/ja_JP.eucJP/man1/keytool.1 
/usr/bin/jre1.6.0_25/man/man1/keytool.1 
/usr/lib/jvm/java-1.5.0-gcj-4.4/bin/keytool 
/usr/lib/jvm/java-1.5.0-gcj-4.4/jre/bin/keytool 
/usr/lib/jvm/java-1.5.0-gcj-4.4/man/man1/keytool.1.gz 
/usr/lib/jvm/java-6-sun-1.6.0.24/bin/keytool 
/usr/lib/jvm/java-6-sun-1.6.0.24/jre/bin/keytool 
/usr/lib/jvm/java-6-sun-1.6.0.24/jre/man/ja/man1/keytool.1.gz 
/usr/lib/jvm/java-6-sun-1.6.0.24/jre/man/man1/keytool.1.gz 
/usr/lib/jvm/java-6-sun-1.6.0.24/man/ja/man1/keytool.1.gz 
/usr/lib/jvm/java-6-sun-1.6.0.24/man/man1/keytool.1.gz 
/usr/share/man/man1/gkeytool-4.4.1.gz 
/usr/share/man/man1/gkeytool.1.gz 
/usr/share/man/man1/keytool.1.gz 
/var/lib/dpkg/alternatives/keytool 
[email protected]:~# echo $JAVA_HOME 
/usr 

にあります。今、私はkeystore-ファイルを作成するには

/usr/lib/jvm/java-6-sun-1.6.0.24/bin/keytool -genkey -v -keyalg RSA -alias tomcat 
-keypass changeit -storepass changeit 

を使用しました。 Tomcatは問題なく起動します!

0

GNU jvmとkeytoolを使用する場合は、サーバのTomcatコネクタに次のオプションを追加できます。XMLそれが仕事を得るために:私は、私がメッセージ「プロバイダーに完全修飾クラス名を」取得「-storetypeはJKS」を使用する場合keystoreType="gkr" algorithm="JessieX509"

アルゴリズムはhere

関連する問題