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ポートにリダイレクトすることができます。
~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サーブレットチュートリアル

