- vừa được xem lúc

HTTPS là gì mà web nào cũng xài (Phần 2)

0 0 6

Người đăng: Thanh Dương Phan

Theo Viblo Asia

Đây là phần 2 của chuỗi bài viết về giao thức https và cách hoạt động của certificate của mình. Nếu các bạn chưa đọc phần 1 thì đọc tại đây nhé.

4. Chứng chỉ (Certificate) là gì?

Trong bài trước, có một vấn đề được đặt ra là, làm sao để đảm bảo được public key mà mình nhận được chính xác là public key của Netflix, mà không phải là của một kẻ thứ 3 nào khác. Câu trả lời là Netflix sẽ không đơn thuần gửi cho mình public key của họ, mà là gửi một chứng chỉ.

Trong chứng chỉ này có chứa các thành phần sau:

  • Subject: tên miền mà chúng ta cần có public key. Ở đây là netflix.com.
  • Subject Public Key: public key mà chúng ta đang cần.
  • Issuer Name: bên phát hành của certificate này. Như trên hình là Amazon Root CA.
  • Issuer Signature: chữ kí số của bên phát hành cho certificate, để đảm bảo nội dung của certificate không bị thay đổi hay làm giả.

Có chứng chỉ này, chúng ta có thể biết tên Subject Public Key có đúng là của Subject hay không, nếu chúng ta xác nhận được nội dung của chứng chỉ không bị làm giả.

Để làm được điều này, chúng ta dùng kĩ thuật verify chữ kí số trong chứng chỉ. Cụ thể thì verify hoạt động như thế nào?

5. Chữ kí số (Digital Signature)

Chữ kí số có 2 lợi ích:

  • Có thể xác minh được rằng dữ liệu được kí có bị thay thế hay làm giả không.
  • Không cần che giấu dữ liệu.

Trước khi được kí bằng chữ kí số, bên kí bắt buộc phải có một cặp public và private key.

Trong chữ kí số ta có 2 hành động chính là: kí (sign) và xác nhận (verify).

  • Chữ kí được tạo ra bằng cách: dữ liệu đi qua hàm băm (hash function), ta có dữ liệu đã được băm, sau đó mã hóa tiếp bằng private key, ta có chữ kí số của dữ liệu này. Trên hình là 8cf24dba3.
  • Chữ kí được xác nhận bằng cách: băm lại dữ liệu bằng hàm băm (hash function) ta được mã băm của dữ liệu, giải mã chữ kí số ta được một mã băm nữa. Nếu 2 mã băm này giống nhau thì chứng tỏ dữ liệu chưa bị thay đổi kể từ khi được kí.

6. Chứng chỉ được tạo ra và hoạt động như thế nào?

Khi Netflix muốn được cấp một chứng chỉ cho tên miền của họ, Netflix sẽ yêu cầu cấp chứng chỉ từ một CA (nhà cung cấp chứng chỉ), chẳng hạn như Amazon, thông qua AWS Certificate Manager. CA này sẽ dùng private key của mình để kí cho chứng chỉ của Netflix sau khi Netflix chứng minh được public key của họ.

Khi nhận được certificate từ Netflix, điều chúng ta cần làm là xác nhận rằng chứng chỉ này có hợp lệ hay không, để có thể tin tưởng được certificate này chứa đúng public key của netflix.com.

Để xác nhận chứng chỉ, ta cần biết được public key của Issuer, bên đã kí chứng chỉ. Như trong hình thì Issuer ở đây là Amazon Root CA, Issuer gốc của Amazon. Trong máy của chúng ta sẽ tồn tại một chứng chỉ gốc của Issuer này, trong đó chứa public key của Amazone Root CA, và được kí bởi chính Amazone Root CA.

Có được public key của Issuer rồi thì ta chỉ việc verify lại chứng chỉ để xác nhận rằng nó có hợp lệ không.

7. Chain of trust

Trên thực tế, các chứng chỉ thường sẽ không được cấp bởi CA gốc như Amazon Root CA, mà nó sẽ thông qua một vài CA trung gian. Chứng chỉ của các CA sẽ được kí liên tiếp tạo thành một chuỗi các chứng chỉ reference nhau:

Kết luận

Như vậy, trên đây là tất cả quy trình căn bản của việc tạo ra một kết nối an toàn trong giao thức https, từ cách hoạt động của mã hóa bất đối xứng đến chứng chỉ và chữ kí số. Nếu thấy bài viết của mình hay và hữu ích, các bạn hãy cho mình 1 upvote nhé. Hay có thắc mắc gì thì để lại comment nè.

Reference

Beta to Prod: How certificates actully works

Bình luận

Bài viết tương tự

- vừa được xem lúc

Bảo mật internet: HTTPS và SSL/TLS như giải thích cho trẻ 5 tuổi

(Mình chém gió đấy, trẻ 5 tuổi còn đang tập đọc mà hiểu được cái này thì là thần đồng, là thiên tài, là mình cũng lạy). . . Xin chào các bạn.

0 0 85

- vừa được xem lúc

Git: Dùng HTTPS hay SSH?

Nếu bạn là một người mới dùng Git, khi clone một repository sẽ có 2 lựa chọn: Clone with HTTPS hay Clone with SSH. Các bạn sẽ phân vân không biết nên dùng cái nào vì đôi khi, dùng link nào cũng clone

0 0 59

- vừa được xem lúc

Phân biệt server xịn và server pha ke bằng SSL Pinning

Xin chào các bạn, trong bài viết này mình muốn chia sẻ về một kĩ thuật rất nên dùng khi cần tăng tính bảo mật của kết nối internet: SSL Pinning. Trong bài viết trước, mình đã giải thích khá kĩ về SSL,

0 0 579

- vừa được xem lúc

Thêm https cho website sử dụng Cloudflare

Chào các bạn. Nào cùng bắt đầu nhé. . Hiện nay có rất nhiều nhà cung cấp tên miền tại việt nam và thế giới như GoDaddy, namecheap, z.

0 0 26

- vừa được xem lúc

Hướng dẫn setup server VPS host ASP.Net , .Net Core + MongoDB + Nginx và bảo vệ server cơ bản bằng ufw + fail2ban. (Phần 4 - Cấu hình HTTPS bằng self-certification hoặc Let's Encrypt.) )

Bài viết này mình sẽ chia sẻ cách cấu hình HTTPS thông qua 2 cách self-certification hoặc Let's Encrypt. Về các chứng giao thức SSL(Secure Sockets Layer)/TLS(Transport Layer Security)các bạ có thể tìm

0 0 28

- vừa được xem lúc

Cấu hình SSL trên Wamp Server trên localhost

Các trang web trong môi trường phát triển sử dụng máy chủ WAMP đôi khi yêu cầu phải có https để phát triển thêm ứng dụng / trang web.WampServer là một công cụ tuyệt vời để xây dựng trang web trên loca

0 0 33