CyStack logo
  • Sản phẩm & Dịch vụ
  • Giải pháp
  • Bảng giá
  • Công ty
  • Tài liệu
Vi

vi

Trang chủHướng dẫnCài đặt SSL trên Tomcat để chuyển hướng từ HTTP sang HTTPS
Java

Cài đặt SSL trên Tomcat để chuyển hướng từ HTTP sang HTTPS

CyStack blog 3 phút để đọc
CyStack blog15/07/2025
Locker Avatar

Chris Pham

Technical Writer

Locker logo social
Reading Time: 3 minutes

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ố.

Cài đặt SSL trên Tomcat

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.

Ví dụ ứng dụng sử dụng SSL trên Tomcat

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.

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất