Võ Văn Hải's blog

Chỉ có một điều tuyệt đối đó là mọi thứ đều tương đối…

Secure web sử dụng HTTPS

Muốn sử dụng HTTPS với SSL trong Tomcat, bạn phải có 1 số công việc phải làm:
- Tự cấp cho mình 1 chứng chỉ
- Cấu hình cho Tomcat có thể lắng nghe các request https
- Viết web


1. Cấp chứng chỉ: Chạy Keytool để sinh file .keystroke

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

Password mặc định là changeit

Điền các thông tin vào, ví dụ như hình:
tomcat_ssl.png
Lệnh này sẽ tạo ra 1 file .keystroke trong thư mục của bạn. Hãy copy file nay2 vào thư mục cài đặt Tomcat.

2. Cấu hình cho Tomcat có thể lắng nghe các request https

Mở file %TOMCAT_HOME%\conf\server.xml lên. Enable phân đoạn sau lên:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="Đường dẫn đến TOMCAT_HOME/.keystore"
keystorePass="changeit"
/>

Khởi động Tomcat lên, bạn sẽ thấy như hình:
tomcat_ssl.png

3. Viết web:

Khi viết web xong, bạn cấu hình secure cho trang web bình thường như các phần trước ngoại trừ ta thêm vào 1 constraint khác như sau:

<security-constraint>
   <display-name>Constraint1</display-name>
   <web-resource-collection>
     <web-resource-name>test</web-resource-name>
     <description/>
     <url-pattern>/index.jsp</url-pattern>
     <http-method>GET</http-method>
     <http-method>POST</http-method>
   </web-resource-collection>
   <auth-constraint>
     <description/>
     <role-name>manager</role-name>
   </auth-constraint>
   <user-data-constraint>
     <description/>
     <transport-guarantee>CONFIDENTIAL</transport-guarantee>
   </user-data-constraint>
</security-constraint>
<login-config>
   <auth-method>DIGEST</auth-method>
</login-config>
<security-role>
<description/>
<role-name>manager</role-name>
</security-role>
<security-constraint> <display-name>Constraint1</display-name> <web-resource-collection> <web-resource-name>test</web-resource-name> <description/> <url-pattern>/index.jsp</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <description/> <role-name>manager</role-name> </auth-constraint> <user-data-constraint> <description/> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> <login-config> <auth-method>DIGEST</auth-method> </login-config> <security-role> <description/> <role-name>manager</role-name> </security-role>

Ở đây dòng lệnh<transport-guarantee>CONFIDENTIAL</transport-guarantee> đảm bảo dữ liệu truyền đi đi được mã hóa với SSL.

Chúng ta có 3 giá trị để chọn lựa đó là NONE, CONFIDENTIAL và INTERGRAL. Tất nhiên mỗi loại có tính chất khác nhau.

10 Responses to “Secure web sử dụng HTTPS”

  1. ga con said

    xin hỏi : những dòng lệnh ở bước 3 “thêm vào 1 constraint” , Thêm vào đâu vậy bạn ?

  2. Võ Văn Hải said

    trong web.xml chứ đâu. config mà!

  3. cuong said

    em làm thế này ,

    nhưng bị lỗi : no certificate file specified or invalid file format

    Lỗi ở đâu thầy ơi .

  4. cuong said

    Connector port=”8443″ protocol=”HTTP/1.1″ SSLEnabled=”true”
    maxThreads=”150″ scheme=”https” secure=”true”
    clientAuth=”false” sslProtocol=”TLS”
    keystoreFile=”key.keystore”
    keystorePass=”changeit”

  5. Võ Văn Hải said

    EM phải dùng keytool sinh ra cái file có tên “key.keystore” mới chạy được.

  6. cuong said

    em vào : https://localhost:8443 thì ok rồi ạ , nhưng vào : https://localhost:8443/CalcsWS/services/Calculator?wsdl thì báo lỗi :

    javax.servlet.ServletException: https is forbidden
    org.apache.axis2.transport.http.AxisServlet.preprocessRequest(AxisServlet.java:612)
    org.apache.axis2.transport.http.AxisServlet.doGet(AxisServlet.java:241)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

  7. cuong said

    trong khi http thường thì vẫn được

    http://localhost:8080/CalcsWS/services/Calculator?wsdl thì OK

  8. Hien said

    Thầy ơi e tạo file keytool theo hướng dẫn của thầy, nhưng làm xong ok hết e k tìm được file .keystroke ở đâu hết. E search trong toàn bộ máy cũng k thấy => thầy có thể cho e biết nó nằm ở đâu k nhé. Thanks thầy nhiều.

  9. Võ Văn Hải said

    Khi bạn mở command-line lên, thư mục hiện hành của bạnh là chỗ nào thì nó sẽ ở chỗ đó.

  10. hương said

    . Thưa thầy thầy có chỉ rõ cho em thêm phần Chạy Keytool để sinh file .keystroke, em chạy nó báo lỗi access denided : không có quyền truy cập, em phải caaso phép 1 cái j đó nhưng chưa biết là vào đâu ạ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
Follow

Get every new post delivered to your Inbox.

Join 2,195 other followers

%d bloggers like this: