Contents

SSL/TLS

What is TLS

TLS dựa trên SSL, được phát triển để thay thế SSL.

../note/document_public/ssl-tls-https-ssh.png

Security Provided

SSL/TLS cũng cấp data encryption, data integrity và authentication.
Nghĩa là khi dùng TLS thì:

  • Không ai có thể đọc message (Encrypt)
  • Không ai có thể thay đổi message (Sign)

Symmetrical Keys and Public and Private Keys

Symmetrical Keys dùng chung key để encrypt/decrypt message.
Public and Private Keys

Keys and SSL Certificates

TLS dùng public và private keys.

Digital certificate dùng để xác định xem public key đó là của ai.
Một digital certificate cung cấp một liên kết giữa public key và một entity (business,domain name,..) mà đã được verified (signed) bởi một trusted third party (certificate authority)

Obtaining a Digital Certificate

  • Điền vào form và gửi public keys đến Certificate authority (CA) (là nơi xác thực certificate).
  • CA kiểm tra và gửi lại các key được bọc trong một certificate.
  • Certificate này được signed bởi Issuing Certificate authority, và được đảm bảo.
  • Giờ ai muốn public key thì mình sẽ gửi certificate, xong họ sẽ verify the signature.

Example Usage

  • Browser connects tới server dùng HTTPS.
  • Server trả về Certificate chứa public key.
  • Browser verifies Certificate bằng cách checking signature của CA.
  • Browser dùng public key này để agree a session key với server.
  • Browser và Server encrypt data qua connection dùng session key.

Digital Certificate Types

  • Domain Validated Certificates (DVC) là một X.509 digital certificate (standard format cho public key certificates) thường được dùng cho Transport Layer Security (TLS) trong đó danh tính của người đăng kí đã được xác thực bằng cách chứng minh một số quyền kiểm soát DNS domain. Quá trình xác thực thường là tự động nên type này rẻ nhất.

  • Extended validation Certificates (EVC) được sử dụng cho website HTTPS. Để lấy một EV certificate phải yêu cầu sự xác thực của requesting entity’s identity bởi một certificate authority (CA)

Certificate Usage Restrictions- Wildcards and SANs

Thông thường mỗi certificate chỉ hợp lệ với một single fully qualified domain name (FQDN). Ví dụ certificate được mua cho www.mydomain.com thì không thể được dùng cho mail.mydomain.com hoặc www.otherdomain.com.
Nếu muốn secure cho subdomain thì có thể mua Wildcard certificate.
Nếu muốn secure cho nhiều domains bằng một certificate thì có thể mua Subject Alternative Name (SAN).

Self Signed Certificates?

Có thể tự tạo một SSL certificate, những khi sử dụng thì browser sẽ báo site is not trusted.

Certificate Encodings and Files Extensions

  • Encodings: Binary files, ASCII (base64) files.
  • Files Extensions: .DER, .PEM (Privacy Enhanced Electron Mail), .CRT, .CERT

Dùng openssl tools để xem encoding type và chuyển đổi encoding.

Common Questions and Answers

Q- What is a trusted store?
A- Là một danh sách các CA certificates that mình trust. Tất cả web browsers đều có trusted store.

Q- What is a certificate fingerprint?
A- Nó là hash của certificate, dùng để xác thực certificate mà không cần cài đặt CA certificate.
Thích hợp cho thiết bị nhỏ, không có nhiều memory để chứa CA files.
Hoặc dùng để verify thủ công, không qua browser.

Q- Nếu certificate bị trộm?
A- Thì có thể thu hồi (revoke).

Q- Keystore dùng để lưu private key và certificate.

  • Cách đặt tên cert.pem (public key)
    key.pem (private key)
    ca.pem (CA’s public key)

HTTPS Flow

Web Server đăng kí với CA để lấy certificate.
Browser request đến Server lần đầu tiên, thì sẽ nhận được Certificate.
Browser verify certificate với CA.
Browser lấy public key từ certificate để encrypt data gửi lên Server.
Server dùng private key decrypt data.

References

🔗 Backlinks