本ドキュメントでは、CentOS で実行している Tomcat 8.5 または Tomcat 9.0 に SSL 証明書をデプロイする方法について説明します。

テスト環境

OS:CentOS 7.6, 64-bit

Web サーバー:Tomcat 8.5 または Tomcat 9.0

最初から Tomcat サーバーに JDK 環境変数をインストールする必要があります。 推奨される JDK 互換構成は Tomcat の公式 Web サイトで確認できます。

前提条件

  • Alibaba Cloud SSL 証明書コンソールから Tomcat サーバー証明書をダウンロード済み。 Tomcat サーバー証明書には、PFX 形式の証明書ファイルと TXT 形式のパスワードファイルが含まれています。
  • SSL 証明書にバインドされているドメイン名の DNS レコードを追加済み。ドメイン名に Tomcat サーバーの IP アドレスを割り当て済み。

    ドメイン名解決を構成してから、ping www.yourdomain.com コマンドを実行します。 Tomcat サーバーの IP アドレスが返されると、解決は成功です。

手順

  1. Tomcat サーバー証明書を解凍します。
    証明書をダウンロードするたびに新しいパスワードファイルが生成されます。 パスワードはダウンロードした証明書に対してのみ有効です。 証明書を更新したい場合は、パスワードも同時に更新する必要があります。
  2. Tomcat のインストールディレクトリに cert ディレクトリを作成し、ダウンロードした証明書ファイルとパスワードファイルを cert ディレクトリにコピーします。
  3. Tomcat/conf/server.xml を開き、server.xml ファイルで以下のパラメータを見つけ出し、変更します。
    <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    
     #上記のパラメータを見つけ出し、<! - -  及び - -> 注釈記号を削除して、次のようにパラメータを変更します:
     <Connector port="80" protocol="HTTP/1.1"
     #コネクタポートを 80 に設定します。
                   connectionTimeout="20000"
                   redirectPort="443" />   
                   #redirectPort を SSL デフォルトポートの 443 に設定して、HTTP リクエストを HTTPS リクエストにリダイレクトします。
    
    
        <Connector port="8443"
              protocol="org.apache.coyote.http11.Http11NioProtocol"
              maxThreads="150"
              SSLEnabled="true">
            <SSLHostConfig>
                <Certificate       certificateKeystoreFile="cert/keystore.pfx"
                 certificateKeystorePassword="XXXXXXX"
                             certificateKeystoreType="PKCS12" />
    
        #上記のパラメータを見つけ出し、<! - -  及び - -> 注釈記号を削除して、次のようにパラメータを変更します:
        <Connector port="443"
        #デフォルトの Tomcat HTTPS ポートコネクタポートを 8443 から 443 に変更します。 ポート 8443 はドメイン名を介して直接アクセスすることはできません。 そのため、ドメイン名にポート番号を追加する必要があります。 ポート 443 が HTTPS のデフォルトポートです。 ドメイン名にポート番号を追加しなくても、ドメイン名を介して直接アクセスできます。
              protocol="org.apache.coyote.http11.Http11NioProtocol"
              #ファイル server.xml のコネクタポートには、NIO と APR の 2 つのモードがあります。 このデプロイメントでは、NIO モードが使用されます。 The protocol="org.apache.coyote.http11.Http11NioProtocol" setting specifies the NIO mode.
              maxThreads="150"
              SSLEnabled="true">
            <SSLHostConfig>
                <Certificate       certificateKeystoreFile="/usr/local/tomcat/cert/証明書ドメイン名.pfx"
                 # certificateKeystoreFile パラメータは、証明書ファイルのパスを指定します。 証明書パス+ファイル名で、「証明書ドメイン名.pfx」を置き換えます(例:certificateKeystoreFile="/usr/local/tomcat/cert/abc.com.pfx")。
                 certificateKeystorePassword="password"
                 # certificateKeystorePassword パラメータは、SSL 証明書のパスワードを指定します。 それを置き換えるには、pfx-password.txt にある証明書パスワードを使用します(例:certificateKeystorePassword="bMNML1Df")。
                 certificateKeystoreType="PKCS12" />
                 #証明書タイプが PFX の場合は、certificateKeystoreType を PKCS12 に設定します。
    					
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    
    #上記のパラメータを見つけ出し、<!  - -  及び - -> 注釈記号を削除して、次のようにパラメータを変更します:
    <Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
     # HTTP リクエストを HTTPS リクエストにリダイレクトするには、redirectPort を 443 に設定します。
  4. 構成を server.xml ファイルに保存します。
  5. Tomcat サービスを再起動します。
    1. Tomcat サービスを無効にするには、Tomcat の bin ディレクトリで ./shutdown.sh を実行します。
    2. Tomcat サービスを有効にするには、Tomcat の bin ディレクトリで ./startup.sh を実行します。

デプロイ後の処理

Tomcat サービスを再起動した後、ブラウザのアドレスバーにドメイン名 https://www.YourDomainName.com を入力して、証明書のデプロイ結果を確認します。 ブラウザのアドレスバーに緑色のロックアイコンが表示されると、証明書のインストールが成功したことを示します。