Tìm hiểu về SSL (Secure Sockets Layer)
SSL là viết tắt của từ Secure Sockets Layer. SSL là tiêu chuẩn của công nghệ bảo mật, truyền thông mã hoá giữa máy chủ Web server và trình duyệt. Tiêu chuẩn này hoạt động và đảm bảo rằng các dữ liệu truyền tải giữa máy chủ và trình duyệt của người dùng đều riêng tư và toàn vẹn. SSL hiện tại cũng là tiêu chuẩn bảo mật cho hàng triệu website trên toàn thế giới, nó bảo vệ dữ liệu truyền đi trên môi trường internet được an toàn như sau:
- Client gửi message tới server với các thông tin về version tls, loại mã hoá mà client hỗ trợ
- Server phản hồi lại thông tin về version tls, loại mã hoá cho session cùng với server cert
- Client kiểm tra thông tin cert bằng cách đối chiếu với root CA (root CA mặc định được cài đặt sẵn trong trình duyệt hoặc máy tính)
- Sau khi kiểm tra xác thực server cert, client gửi pre-master key bất kỳ được mã hoá bằng public key của server (public key dược lấy trong server cert).
- Server giải mã bằng private eky để lấy thông tin pre-master key
- Lúc này cả server và client sẽ tính toán để tạo ra shared secret key (hay master key)
- Client thử gửi 1 meassage sử dụng shared secret key tới server
- Server giải mã message này bằng shared secret key và gửi lại cho client.
- Nếu 2 kết quả trùng nhau kết nối được thiết lập
Tạo chứng chỉ SSL trên linux:
Cài đặt OpenSSL: (Đã được tải từ trước)
yum install -y openssl
Tao thư mục /etc/ssl/private để chứa các khóa riêng tư. Khóa các quyền truy cập từ Group, Other với thư mục này.
mkdir /etc/ssl/private
chmod 700 /etc/ssl/private
Tạo cặp khóa và chứng chỉ SSL tự ký:
openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt -days 365
- req: Yêu cầu request của OpenSSL.
- -x509: Xác định đang tạo một chứng chỉ SSL tự ký.
- -newkey rsa:2048 : Tạo cặp key mới với thuật toán RSA với kích thước 2048bits.
- -nodes: Cho OpenSSL biết bỏ qua tùy chọn để bảo vệ chứng chỉ của bạn bằng mật khẩu. Bạn cần Nginx có thể đọc file khi máy chủ khởi động mà không cần sự can thiệp của người dùng. Mật khẩu sẽ ngăn điều này xảy ra vì bạn phải nhập mật khẩu sau mỗi lần khởi động lại.
- -keyout: Dòng này cho OpenSSL biết nơi để đặt file khóa riêng tư tạo ra.
- -out: Cho OpenSSL biết nơi đặt chứng chỉ SSL đang tạo.
- -days 365: Tùy chọn này thiết lập thời gian chứng chỉ tồn tại.
Tạo nhóm Diffie-Hellman mạnh để trao đổi với client. (Chờ vài phút)
Tao file /etc/nginx/conf.d/ssl.conf để config cho HTTPS.
Bởi vì key tự ký nên chứng chỉ tạo ra không phải là cert global do bên thứ 3 chứng nhận nên sẽ hiện ra cảnh bảo như sau.
Nhấp vào “Advanced” và sau đó nhấp vào liên kết được cung cấp để tiếp tục truy cập vào máy chủ:
Vì vậy nên https của ký tự tạo sẽ bị gạch đỏ.
**Note: Câu lệnh kiểm tra ngày hết hạn của chứng chỉ **
openssl -x509 -in /etc/ssl/certs/nginx.selfsigned.crt -noout -dates
All rights reserved