SSLを使用してTomcatを正常に構成し、自己署名証明書を使用していました。最近、クライアントに私たちの証明書を「承認/信頼」させるだけでは簡単ではないという問題が発生しました。そのサーバーのverisigin証明書を購入しました。
証明書に新しい証明書をキーストアに追加しました。 Tomcatのserver.xmlファイルを更新して、新しい証明書のエイリアスを使用します。 Tomcatとサーバーの両方を再起動しました。サーバーに接続するたびに、古い証明書を取得します。
環境:
Connectorfrom server.xml:
<Connector port="443" maxThreads="150"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="keystore.keys" keyalias="webapps2013"
keystorePass="Redacted"
clientAuth="false" sslProtocol="TLS" protocol="HTTP/1.1" />
古い証明書を別のエイリアスに移動し、古いエイリアス名と同じ場所に新しい証明書を追加して、キーストアを変更しようとしました。
複数のブラウザやワークステーションから試してみました。 (キャッシュもクリアしました。)
では、Tomcatが新しい証明書を取得して提供するにはどうすればよいですか?
更新:
コメントの1つでtomcatsキャッシュをクリアするよう提案された後。
Tomcatを停止し、$ {CATALINA_HOME}/workを削除して、Tomcatを再起動しました。
まだ古い証明書を提供しています。
更新2:
jakarta_service_date.logcatalina.date.logmanagerを調べました.date.logstdout.date.logおよびstderr.date.log何も表示されません証明書エラー。セッションのシリアル化に関して奇妙なエラーが表示されますが。
Dec 11, 2013 10:46:27 AM org.Apache.catalina.session.StandardManager doUnload
SEVERE: IOException while saving persisted sessions: Java.io.FileNotFoundException:
C:\Tomcat6.0\work\Catalina\localhost\RCSLIBRRunner\SESSIONS.ser (Access is denied)
Java.io.FileNotFoundException: C:\Tomcat6.0\work\Catalina\localhost\RCSLIBRRunner\SESSIONS.ser (Access is denied)
その後にスタックトレースが続きます。他のアプリケーションも同様の例外を投げました。それは数時間で起こっていません、それはtomcatsキャッシュをクリアすることによる副作用であったと思います。
次に、別のシリアライゼーションエラーを示します。
Dec 11, 2013 10:46:27 AM org.Apache.catalina.session.StandardManager stop
SEVERE: Exception unloading sessions to persistent storage
Java.io.FileNotFoundException: C:\Tomcat6.0\work\Catalina\localhost\RCSLIBRRunner\SESSIONS.ser (Access is denied)
ログにエラーがあり、protocol="HTTP/1.1"
で問題が発生しました。私たちのエラーは
指定された証明書ファイルまたは無効なファイル形式
" google research "に基づいて、代わりにこれをprotocol
に使用しました:
protocol="org.Apache.coyote.http11.Http11NioProtocol"
Connector
は次のとおりです。
<Connector port="8443" protocol="org.Apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
keystoreFile="/path/to/keystore"
keystorePass="******"
clientAuth="false"
sslProtocol="TLS" />
Connector
にタイプミスがあったことがわかりました
そのはず:
<Connector port="443" maxThreads="150"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="keystore.keys" keyAlias="webapps2013"
keystorePass="Redacted"
clientAuth="false" sslProtocol="TLS" protocol="HTTP/1.1" />
注:keyAlias
の最初のaは大文字です。
エイリアスがリストされていない場合は、キーストアで見つかった最初のキーを単に黙って提供することがわかります。