証明書の設定
Tomcat 新規/更新用

中間CA証明書、サーバー証明書をダウンロードし、次の手順に従い証明書を設定してください。

  1. 証明書のインストール
  2. TLS/SSLの有効化 および 再起動

-lightblue

注意事項

本手順ではパスワードを入力する手順がありますが、 パスワード入力の際、 エコーバックで入力したパスワードの表示される古い版があります。 パスワードの漏洩のないようにご注意ください。
また、深刻な脆弱性も知られていますので、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.証明書インストール方法

作業の前にJavaの系列を確認してください。インポート時と実行時とでJavaの系列が異なると、鍵ストア・ファイルがうまく読めないことがあります。

【1-1】サーバー証明書とチェーン証明書(中間CA証明書)の2つをつなぐ

まず、各証明書ファイルの末尾が5つのハイフンと改行で終わっていることを、ご確認ください。

次のコマンドを入力し、ダウンロードしたサーバー証明書(例:Bxxxxxx.cer)と上記の中間CA証明書(例: pfwsr3ca.cer)の2つをつなぎます。

コマンド例:

$ cat Bxxxxxx.cer pfwsr3ca.cer >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-1.でつないだファイルの名前

/your/keystore/filename」:申込時に作成した鍵ストアのファイルの名前

【1-3】パスワードの入力

プロンプトが表示されたら、パスワードを入力してください。

コマンド例:

Enter keystore password: changeit

changeit」:申込時に作成した鍵ストアのパスワード

※JREのバージョンにより、次のようなプロンプトが表示されることがあります。 表示された場合は、「yes」と入力してください。

コマンド例:

Top-level certificate in reply:
Owner: CN=SECOM Passport for Web SR 3.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: 22b9b12f4d05f9ed13
Valid from: Fri Mar 16 14:49:12 JST 2018 until: Thu Mar 16 14:49:12 JST 2028
Certificate fingerprints:
  MD5: 58:90:E5:56:02:F0:39:01:14:3F:E0:52:91:93:10:F5
  SHA1: 6B:28:0F:B5:8C:B7:DA:FC:D7:23:B9:55:75:A8:B4:2C:83:AE:86:18
  SHA256: E0:5E:D4:A9:E4:C7:73:30:8A:93:E8:49:86:12:25:AE:34:9A:92:BB:D4:BA:CD:D4:90:0A:D4:E7:3B:13:11:00

... is not trusted. Install reply anyway? [no]:  yes

-lightblue

<プロンプトが日本語表示の場合>

環境によっては、次のような日本語表示のこともあります。

コマンド例:

応答したトップレベルの証明書:

所有者: CN=SECOM Passport for Web SR 3.0 CA, O=SECOM Trust Systems CO.,LTD., C=JP
実行者: OU=Security Communication RootCA2, O=SECOM Trust Systems CO.,LTD., C=JP
シリアル番号: 22b9b12f4d05f9ed13
有効期間の開始日: Fri Mar 16 14:49:12 JST 2018 終了日: Thu Mar 16 14:49:12 JST 2028
証明書のフィンガープリント:
MD5: 58:90:E5:56:02:F0:39:01:14:3F:E0:52:91:93:10:F5
SHA1: 6B:28:0F:B5:8C:B7:DA:FC:D7:23:B9:55:75:A8:B4:2C:83:AE:86:18
SHA256: E0:5E:D4:A9:E4:C7:73:30:8A:93:E8:49:86:12:25:AE:34:9A:92:BB:D4:BA:CD:D4:90:0A:D4:E7:3B:13:11:00

... は信頼されていません。 応答をインストールしますか? [no]:

【1-4】インストールの確認

次のように表示されることを、ご確認ください。

コマンド例:

Certificate reply was installed in keystore

以上で証明書のインストールは完了です。

-lightblue

<証明書のファイルの削除>

この確認がとれればつないだ証明書のファイルは不要になりますので、次のコマンドの入力で削除していただいて問題ございません。

コマンド例:

$ 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の設定にしたがった鍵ストアのタイプ

※Jakarta Tomcat 4.1.31以前 の場合

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

※Apache Tomcat 4.1.32以降 の場合

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

※Tomcat 5.0、5.5 の場合

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

※Apache Tomcat 6、Apache Tomcat 7.0.52以前 の場合

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

※Apache Tomcat 7.0.53以降 の場合

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

※Apache Tomcat 8.0.9以降、Apache Tomcat 8.5.3以降、Apache Tomcat 9.0.4~9.0.73 の場合

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

※Apache Tomcat 9.0.74以降 の場合

<!-- Define an SSL/TLS 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"
                maxParameterCount="1000"
                keystoreFile="/your/keystore/filename"
                keystorePass="changeit" keyAlias="tomcat">

※Apache Tomcat 8.5.3以降、Apache Tomcat 9.0.4以降でSNIプロトコル拡張を使用なさる場合

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>

※Apache Tomcat 10.0.2以降、Apache Tomcat 10.1.0以降、Apache Tomcat 11.0.0以降 の場合

ひとつの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

参考: 待ち受けるポート番号によっては、スーパーユーザー特権の不必要な場合もあります。

証明書のインストールは、以上で完了です。

※ 重要
証明書のインストール後、鍵ストアのファイルは、必ずバックアップをとり、パスワードの保管場所と別の安全な場所に保管してください。