Thiết lập Https cho tomcat server (cài đặt TLS – SSL)

Thiết lập Https cho tomcat server (cài đặt TLS – SSL)

(Xem lại: Tomcat là gì? Cài đặt và cấu hình tomcat)

(Xem lại: Cài đặt Java và biến môi trường)

(Lưu ý, máy của bạn phải cài JDK và Tomcat)

Giới thiệu về TLS – SSL

TLS (Transport Layer Security) trước đó là SSL (Secure Sockets Layer) là công nghệ cho phép trình duyệt web và server web giao tiếp với nhau qua một kết nối bảo mật. Có nghĩa là những dữ liệu trước khi gửi sẽ được mã hóa hóa và chỉ được giải mã ở phía bên kia.

Ví dụ bạn gửi thông tin đăng nhập gồm username/password, trước khi gửi tới server nó sẽ được mã hóa và giải mã ở server. Nếu hacker bắt được gói tin cũng không thể biết được username/password là gì vì nó đã được mã hóa. Trường hợp bạn không sử dụng TLS/SSL thì thông tin username/password sẽ ở dạng plaintext không được mã hóa, hacker bắt gói tin (ví dụ dùng wireshark bắt gói tin) sẽ xem được thông tin username/password là gì.

Một tính năng quan trọng khác của SSL/TLS là xác thực, nghĩa là khi bạn giao tiếp với một trang web nào đó, server sẽ hiển thị một giấy chứng nhận. (Ví dụ như trang web đã được tổ chức cung cấp chứng chỉ số xác nhận các thông tin như trang web của ai, tổ chức nào…)

Ví dụ trang web stackjava.com đã được thiết lập SSL/TLS nên sẽ truy cập qua đường dẫn https và có biểu tượng security(hình ổ khóa màu xanh):

Thiết lập Https cho tomcat server (cài đặt TLS - SSL) Thiết lập Https cho tomcat server (cài đặt TLS - SSL)

Thiết lập Https cho tomcat server (cài đặt TLS - SSL)

Thiết lập Https cho tomcat server (cài đặt TLS – SSL) stackjava.com

Cấu hình SSL/TLS cho server tomcat

B1. Tạo keystore.

keystore sẽ dùng để mã hóa dữ liệu, chữ ký số.

Để tạo keystore ta dùng keytool có sẵn trong JDK:

Windows:

"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA

Unix:

$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA

(Thuật toán RSA sẽ được dùng để mã hóa.)

Sau khi chạy lệnh command ở trên một file “.keystore” sẽ được tạo ra ở thư mục của người dùng.

Để chỉ rõ tên file hoặc nơi chứa file ta có thể thêm tham số -keystore vào lẹnh command trên:

Windows:

"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA -keystore \path\to\my\keystore

Unix:

$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore /path/to/my/keystore

Ví dụ:

Ví dụ tạo keystore cho tomcat

Mình nhập password cho keystore là admin1234, sau khi chạy các lệnh trên nó sẽ tạo ra một file .keystore trong folder C:\Users\kai

B2. Cấu hình SSL/TLS cho tomcat

Vào folder cài đặt tomcat, mở file conf/server.xml

Bỏ comment cho thẻ cấu hình SSL/TLS và sửa keystoreFile thành nơi chứa file .keystore tạo ở trên, sửa keystorePass thành password lúc nhập cho keystore.

<Connector
       protocol="org.apache.coyote.http11.Http11NioProtocol"
       port="8443" maxThreads="200"
       scheme="https" secure="true" SSLEnabled="true"
       keystoreFile="${user.home}/.keystore" keystorePass="admin1234"
       clientAuth="false" sslProtocol="TLS"/>

enable SSL/TLS on tomcat server

Bây giờ start tomcat lên:

cổng 8080 dành cho kết nối http

Cổng 8443 dành cho kết nối https (SSL/TLS), vì keystore do mình tự tạo chứ không được cung cấp bởi các tổ chức phát hành chứng chỉ số nên nó sẽ báo đỏ nhưng dữ liệu đã được mã hóa rồi nhé =))

Okay, Done!

Thiết lập Https cho tomcat server (cài đặt TLS – SSL) stackjava.com

References:

https://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html

stackjava.com