ウェブサイト検索

TomcatでSSLを設定し、HTTPからHTTPSへの自動リダイレクトを設定する手順


セキュアソケットレイヤー(SSL)は、インターネット上でメッセージのセキュリティを提供する暗号化プロトコルです。これは、プライベートキーとパブリックキーの概念に基づいており、メッセージはネットワークを介して送信する前に暗号化されます。TomcatにSSLを構成するには、開発環境用にJavaのkeytoolを使用して作成できるデジタル証明書が必要です。運用環境では、Verisign、Entrust、Lets’ EncryptなどのSSL証明書プロバイダーからデジタル証明書を取得する必要があります。

SSL証明書の作成

以下の手順に従って、自分のデジタル証明書を作成してください。

keytool -genkey -alias tomcat -keyalg RSA -keystore mycertificate.cert
Enter keystore password:
Re-enter new password:
What is your first and last name?
  [Unknown]:  Pankaj Kumar
What is the name of your organizational unit?
  [Unknown]:  Dev
What is the name of your organization?
  [Unknown]:  JournalDev
What is the name of your City or Locality?
  [Unknown]:  Bangalore
What is the name of your State or Province?
  [Unknown]:  Karnataka
What is the two-letter country code for this unit?
  [Unknown]:  IN
Is CN=Pankaj Kumar, OU=Dev, O=JournalDev, L=Bangalore, ST=Karnataka, C=IN correct?
  [no]:  Yes

Enter key password for <tomcat>
	(RETURN if same as keystore password):
Re-enter new password:
ls
mycertificate.cert

私はキーストアとキーに「changeit」というパスワードを使用しましたが、あなたは好きなものを使っても構いません。今、私たちのデジタル証明書は準備が整い、次のステップはTomcatでHTTPS通信ポートを有効にし、SSLサポートを提供するために私たちのデジタル証明書を使用するように設定することです。

トムキャット HTTPS

SSLを有効にするには、~Tomcat_Installation/conf/server.xmlファイルを開き、次の行のコメントを外してください:

<Connector port="8443" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" scheme="https" secure="true"
               keystoreFile="/Users/Pankaj/tomcat/conf/mycertificate.cert"
	       clientAuth="false" sslProtocol="TLS" />

証明書の誤配置を避けるために、それをトムキャットのconfディレクトリに入れました。今、トムキャットを再起動し、ポート8443でhttps経由で任意のWebアプリケーションにアクセスしてみてください。

トムキャット HTTP を HTTPS にリダイレクトする

これで、HTTPポートとHTTPSポートの両方で任意のWebアプリケーションにアクセスできるようになります。いくつかの設定を行うことで、トムキャットを設定してすべてのHTTPリクエストをHTTPSポートにリダイレクトすることができます。

  1. ~TomcatInstallation/conf/server.xmlのHTTPコネクタにおいて、リダイレクトポートをHTTPSコネクタポートに設定します。見た目はこのようになります:

    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
        <Connector port="8090" maxHttpHeaderSize="8192"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" redirectPort="8443" acceptCount="100"
                   connectionTimeout="20000" disableUploadTimeout="true" />
    </pre>
    </li>
    <li>In ~TomcatInstallation/conf/web.xml
    
    Add below configuration but make sure to add it after all the servlet-mapping tags.
    
    <pre>
    <!-- added by Pankaj for automatic redirect from HTTP to HTTPS -->
    <security-constraint>
    <web-resource-collection>
    <web-resource-name>Entire Application</web-resource-name>
    <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
    </security-constraint>
    

今すぐトムキャットを再起動してください。そうすれば、すべてのHTTPリクエストが自動的にHTTPSにリダイレクトされます。つまり、https://localhost:8080/axis2は自動的にhttps://localhost:8443/axis2にリダイレクトされます。注意: URLにポートを指定したくない場合は、HTTPには80、HTTPSには443を使用してください。その場合、HTTPリクエストをHTTPSに自動的にリダイレクトする最初のステップをスキップできます。なぜなら、デフォルトのポート443が自動的に選択されるからです。更新: トムキャットで作業している場合は、以下の投稿に興味があるかもしれません。

  • Javaウェブアプリケーションチュートリアル
  • Javaサーブレットチュートリアル

関連記事: