証明書の設定Tomcat 新規/更新用
中間CA証明書、サーバー証明書をダウンロードし、次の手順に従い証明書を設定してください。
本手順ではパスワードを入力する手順がありますが、 パスワード入力の際、 エコーバックで入力したパスワードの表示される古い版があります。 パスワードの漏洩のないようにご注意ください。
また、深刻な脆弱性も知られていますので、TomcatおよびJREは、最新版に更新しておくことをおすすめします。
≪Tomcat 4をご利用の場合≫
Tomcat 4ではPureTLSを優先します。JSSEをご使用の場合は、以下のどちらかでご対応ください。
- ・server.xmlファイルでFactory要素のSSLImplementation属性の値を 「org.apache.tomcat.util.net.JSSEImplementation」 と明示する
- ・PureTLSをアンインストールする
≪Windows版をご利用の場合≫
実際の表記や用語が異なりますので、 読み替えて行ってください
環境 | Unix | DOS(Windows) |
---|---|---|
変数置換 | ${変数名} | %変数名% |
パス名 | /ディレクトリー名/ファイル名 | ドライブ名:¥ディレクトリー名¥ファイル名 |
プロンプト | #や$ | ドライブ名> |
ファイルをつなぐコマンド | cat | type |
拡張子 | sh | bat |
コマンド・インタープリタ | シェル | コマンド プロンプト |
1.証明書インストール方法
- 注意事項
- 中間CA証明書が新しくなりました。
2023/9/2以降に発行される証明書より、新しい中間CA証明書をインストールする必要があります。
お客様専用ページから新しい中間CA証明書をダウンロードして、インストールを行ってください。
作業の前にJavaの系列を確認してください。インポート時と実行時とでJavaの系列が異なると、鍵ストア・ファイルがうまく読めないことがあります。
1-1
サーバー証明書と中間CA証明書の2つをつなぐ
まず、各証明書ファイルの末尾が5つのハイフンと改行で終わっていることを、ご確認ください。
次のコマンドを入力し、ダウンロードしたサーバー証明書(例:Bxxxxxx.cer)と上記の中間CA証明書(例: chain.txt)の2つをつなぎます。
コマンド例:
$ cat Bxxxxxx.cer chain.txt >combined.crt
「combined.crt」: 任意のファイル名
1-2
証明書のインストール
次のコマンドを入力し、つないだ証明書をインストールしてください。
コマンド例:
$ keytool -import -alias tomcat -file combined.crt -keystore /your/keystore/filename
「tomcat」:申込時に作成した鍵ペアの名前。
Tomcat 6以降をご利用の場合は、立上げファイル (conf/server.xml) のConnector要素のkeyAlias属性に指定した値と同一です。
「combined.crt」:上記手順 1-2.でつないだファイルの名前
「/your/keystore/filename」:申込時に作成した鍵ストアのファイルの名前
1-3
パスワードの入力
プロンプトが表示されたら、パスワードを入力してください。
コマンド例:
Enter keystore password: changeit
「changeit」:申込時に作成した鍵ストアのパスワード
※JREのバージョンにより、次のようなプロンプトが表示されることがあります。 表示された場合は、「yes」と入力してください。
コマンド例:
Top-level certificate in reply:
Owner: CN=SECOM Passport for Web EV 2.0 CA, O=SECOM Trust Systems CO.,LTD., C=JP
Issuer: OU=Security Communication RootCA2, O=SECOM Trust Systems CO.,LTD., C=JP
Serial number: 22b9b0c9
Valid from: Tue Dec 16 16:04:09 JST 2014 until: Mon Dec 16 16:04:09 JST 2024
Certificate fingerprints:
MD5: 9F:0D:DD:17:68:9C:31:60:FC:DB:13:EB:CF:55:11:2B
SHA1: 4F:AC:E6:81:8F:58:B6:73:C0:2D:3B:B6:EA:2E:C1:9B:FF:FE:BA:A6
SHA256: E1:F2:E9:50:00:F8:15:E1:1C:81:49:04:30:B5:D0:2C:8D:81:D0:D2:56:C8:5D:F6:8B:51:6D:6C:27:76:19:26
... is not trusted. Install reply anyway? [no]: yes
環境によっては、次のような日本語表示のこともあります。
コマンド例:
応答したトップレベルの証明書:
所有者: CN=SECOM Passport for Web EV 2.0 CA, O=SECOM Trust Systems CO.,LTD., C=JP
実行者: OU=Security Communication RootCA2, O=SECOM Trust Systems CO.,LTD., C=JP
シリアル番号: 22b9b0c9
有効期間の開始日: Tue Dec 16 16:04:09 JST 2014 終了日: Mon Dec 16 16:04:09 JST 2024
証明書のフィンガープリント:
MD5: 9F:0D:DD:17:68:9C:31:60:FC:DB:13:EB:CF:55:11:2B
SHA1: 4F:AC:E6:81:8F:58:B6:73:C0:2D:3B:B6:EA:2E:C1:9B:FF:FE:BA:A6
SHA256: E1:F2:E9:50:00:F8:15:E1:1C:81:49:04:30:B5:D0:2C:8D:81:D0:D2:56:C8:5D:F6:8B:51:6D:6C:27:76:19:26
... は信頼されていません。 応答をインストールしますか? [no]:
1-4
インストールの確認
次のように表示されることを、ご確認ください。
コマンド例:
Certificate reply was installed in keystore
以上で証明書のインストールは完了です。
この確認がとれればつないだ証明書のファイルは不要になりますので、次のコマンドの入力で削除していただいて問題ございません。
コマンド例:
$ rm -f combined.crt
2.TLS/SSLの有効化 および 再起動
TLS/SSLを有効にし、再起動を行います。 TLS/SSLを設定済みであれば、次のように設定されているかどうかをご確認いただき、再起動を行ってください。
2-1
TLS/SSLの有効化
次のようなConnector要素 (またはSSLHostConfig要素やCertificate要素) を、 server.xmlファイルに指定してください。
- ・「443」 : Tomcatが待ち受けるポートの番号
※Tomcat付属の立上げファイルでは8443番ポートですが、 httpsでは既定で443番ポートを使用します。 - ・「changeit」 : 申込時に作成した鍵ストアのパスワード
- ・「/your/keystore/filename」 : 申込時に作成した鍵ストアのファイル名
- ・「tomcat」 : 申込時に作成した鍵ペア名
- ・「www.example.jp」 : 申込時に入力したコモン・ネーム
- ・「JKS」 : 申込時のJavaの設定にしたがった鍵ストアのタイプ
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<!--
-->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="443" minProcessors="5" maxProcessors="75" enableLookups="true"
acceptCount="100" debug="0" scheme="https" secure="true"
useURIValidationHack="false" disableUploadTimeout="true">
<Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
keystoreFile="/your/keystore/filename" keystorePass="changeit"
clientAuth="false" protocol="TLS"/>
</Connector>
<!--
-->
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<!--
-->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="443" enableLookups="true" scheme="https"
secure="true" acceptCount="100"
useURIValidationHack="false" disableUploadTimeout="true"
keystoreFile="/your/keystore/filename"
keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
<!--
-->
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<!--
-->
<Connector port="443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true"
keystoreFile="/your/keystore/filename" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
<!--
-->
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<!--
-->
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="/your/keystore/filename" keystorePass="changeit"
keyAlias="tomcat"
clientAuth="false" sslProtocol="TLS" />
<!--
-->
<!-- Define a SSL HTTP/1.1 Connector on port 8443
This connector uses the BIO implementation that requires the JSSE
style configuration. When using the APR/native implementation, the
OpenSSL style configuration is required as described in the APR/native
documentation -->
<!--
-->
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/your/keystore/filename" keystorePass="changeit"
keyAlias="tomcat"
clientAuth="false" sslProtocol="TLS" />
<!--
-->
<!-- Define an SSL HTTP/1.1 Connector on port 8443
This connector uses the NIO implementation that requires the JSSE
style configuration. When using the APR/native implementation, the
OpenSSL style configuration is required as described in the APR/native
documentation -->
<!--
-->
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/your/keystore/filename" keystorePass="changeit"
keyAlias="tomcat"
clientAuth="false" sslProtocol="TLS" />
<!--
-->
Connector要素の内側に次のようなSSLHostConfig要素を追加してください。
Connector要素が「/>」で終わる自己区切りのときは、「/」文字の削除と同様、 閉じタグ (「</Connector>」) も忘れず追加してください。
「JKS」でうまく機能しない場合、「pkcs12」も試してみてください。
<SSLHostConfig hostName="www.example.jp">
<Certificate certificateKeystoreFile="/your/keystore/filename"
certificateKeystorePassword="changeit"
certificateKeyAlias="tomcat"
certificateKeystoreProvider="SUN"
certificateKeystoreType="JKS"
type="RSA" />
</SSLHostConfig>
ひとつのConnector要素の中に複数のSSLHostConfig要素をお使いのばあい、SSLHostConfig要素のhostName属性の値にFQDNを指定してください。
UpgradeProtocol要素のあった場合でも、UpgradeProtocol要素の変更は不要です。
<!-- Define an SSL HTTP/1.1 Connector on port 8443
This connector uses the NIO implementation. The default
SSLImplementation will depend on the presence of the APR/native
library and the useOpenSSL attribute of the
AprLifecycleListener.
Either JSSE or OpenSSL style configuration may be used regardless of
the SSLImplementation selected. JSSE style
configuration is used below.
-->
<!--
-->
<Connector
port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate
certificateKeystoreFile="/your/keystore/filename"
certificateKeyAlias="tomcat"
certificateKeystorePassword="changeit"
type="RSA" />
</SSLHostConfig>
</Connector>
<!--
-->
注意:
鍵ストアのパスワードは、 server.xmlファイルに平文で指定します。 パスワードや秘密鍵が他人に漏洩しないよう、 このファイルやconfディレクトリーの許可モードなどにご注意ください。
2-2
Tomcatの停止・再起動
設定を反映させるため、Tomcatを停止・再起動をしてください。
停止コマンド
$ ${CATALINA_HOME}/bin/catalina.sh stop
または
$ ${CATALINA_HOME}/bin/shutdown.sh
「${CATALINA_HOME}」:Tomcatを導入したディレクトリー
再起動コマンド
# ${CATALINA_HOME}/bin/catalina.sh run
または
# ${CATALINA_HOME}/bin/startup.sh
参考: 待ち受けるポート番号によっては、スーパーユーザー特権の不必要な場合もあります。
証明書のインストールは、以上で完了です。
※ 重要
証明書のインストール後、鍵ストアのファイルは、必ずバックアップをとり、パスワードの保管場所と別の安全な場所に保管してください。