Secured Socket Layer (SSL) là giao thức mã hóa nhằm cung cấp khả năng bảo mật thông tin được gửi trên Internet. Giao thức này sử dụng cặp khóa Private và Public để mã hóa các thông điệp trước khi gửi đi. Để cấu hình SSL trên Tomcat, chúng ta cần một chứng chỉ (certificate) số.

Ta có thể tự tạo chứng chỉ này bằng công cụ keytool của Java để dùng cho môi trường development (phát triển). Đối với môi trường production, chúng ta nên lấy chứng chỉ từ các nhà cung cấp uy tín như Verisign, Entrust, hay Lets’ Encrypt.
Tạo chứng chỉ SSL trên Tomat
Hãy dùng lệnh keytool dưới đây để tự tạo chứng chỉ số cho riêng mình.
$ 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
Trong ví dụ này, ta sử dụng mật khẩu changeit cho cả Keystore và key, nhưng bạn có thể tùy ý chọn mật khẩu khác. Bước tiếp theo là kích hoạt cổng giao tiếp HTTPS trên Tomcat và cấu hình để máy chủ sử dụng chứng chỉ số này nhằm hỗ trợ SSL.
Cấu hình HTTPS trên Tomcat
Để kích hoạt SSL, hãy mở file ~Tomcat_Installation/conf/server.xml và bỏ dấu comment ở dòng sau:
<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" />
Để tránh đặt file chứng chỉ sai vị trí, ta đã đặt nó vào thư mục conf của Tomcat. Bây giờ, hãy khởi động lại Tomcat và thử truy cập một ứng dụng web bất kỳ thông qua giao thức https với cổng 8443.

Chuyển hướng từ HTTP sang HTTPS trên Tomcat
Như vậy, ứng dụng web đã có thể được truy cập trên cả hai cổng HTTP và HTTPS. Tiếp theo, ta có thể cấu hình Tomcat để chuyển hướng (redirect) tất cả các request đến cổng HTTP sang HTTPS bằng một vài thiết lập sau.
Trong cấu hình HTTP Connector ở ~TomcatInstallation/conf/server.xml, hãy đặt cổng chuyển hướng (redirectPort) thành cổng của HTTPS connector. Cấu hình sẽ trông tương tự như sau:
<!-- 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>
Bây giờ, hãy khởi động lại Tomcat. Tất cả các request HTTP sẽ tự động được chuyển hướng sang HTTPS. Ví dụ, https://localhost:8080/axis2 sẽ được chuyển hướng thành https://localhost:8443/axis2.
Lưu ý: Nếu bạn không muốn phải nhập số cổng trong URL, hãy sử dụng cổng 80 cho HTTP và 443 cho HTTPS. Khi đó, người dùng có thể truy cập ứng dụng mà không cần chỉ định cổng với request sẽ được tự động chuyển đến cổng 443.