Let’s Encrypt là gì?
Như đã đề cập ở bài viết trước về SSL, kể từ 2014, Google đã chính thức ưu tiên các website hỗ trợ giao thức HTTPS trên kết quả tìm kiếm. Để giảm nguy cơ giả danh, đảm bảo an toàn cho người dùng, tích hợp chứng chỉ SSL vào một website có giao thức HTTPS là sự lựa chọn hàng đầu.
Để có chứng chỉ SSL, bạn phải đăng ký với các tổ chức xác thực với 3 loại: DV, OV và EV tùy theo từng loại hình website của bạn.
Những tổ chức xác thực Comodo, GeoTrust, Symantec,… đều có có thu phí. Vậy, có thể chứng chỉ SSL miễn phí không?
Let’s Encrypt là một nhà cung cấp chứng chỉ số SSL (Certificate Authority) hoàn toàn miễn phí nhằm cung cấp chứng nhận SSL cho cộng đồng nói chung. Đây là một dự án của Internet Research Group, một hiệp hội về dịch vụ cộng đồng.
Let’s Encrypt được tài trợ bởi nhiều công ty bao gồm Google, Facebook, Sucuri, Mozilla, Cisco, v.v…
Lợi ích khi sử dụng Let's Encrypt
- Miễn phí:Chỉ cần sở hữu một tên miền, bạn có thể sử dụng Let's Encrypt để có được chứng chỉ tin cậy mà không tốn một xu nào.
- Tự động:Phần mềm chạy trên máy chủ web có thể tương tác với Let's Encrypt để có được chứng chỉ một cách nhanh chóng, cấu hình an toàn để sẵn sàng sử dụng và tự động thay mới khi cần.
- An toàn:Let's Encrypt sẽ hoạt động như một nền tảng thúc đẩy những TLS tốt nhất, cả về phía CA (Certificate Authority) và giúp các nhà khai thác trang web đảm bảo an toàn cho máy chủ một cách đúng đắn.
- Minh bạch:Tất các các chứng chỉ được ban hành hoặc thu hồi sẽ được ghi công khai và bất cứ ai cũng có thể kiểm tra.
- Không hạn chế:Giao thức phát hành và gia hạn tự động sẽ được công bố như một tiêu chuẩn công khai và người khác có thể áp dụng.
- Hợp tác:Giống như những giao thức Internet cơ bản khác, Let's Encrypt nỗ lực để mang lại lợi ích cho cộng đồng và không nằm dưới sự kiểm soát của bất kỳ một tổ chức nào.
Let's Encrypt tạo chứng chỉ SSL miễn phí như thế nào?
Mục tiêu của Let's Encrypt và giao thức ACME là thiết lập máy chủ HTTPS và để nó tự động có được chứng nhận đáng tin cậy trên trình duyệt mà không cần có bất kỳ sự can thiệp nào của con người. Điều này được thực hiện bằng cách chạy một trình quản lý chứng chỉ trên máy chủ web.
Để hiểu công nghệ của Let's Encrypt làm việc như thế nào, hãy cùng tìm hiểu quá trình thiết lập trang web https:.//example.com/ với trình quản lý chứng chỉ hỗ trợ Let's Encrypt.
Có 2 bước trong quá trình này. Đầu tiên, trình quản lý sẽ chứng minh với CA rằng máy chủ web đang kiểm soát một tên miền. Sau đó, trình quản lý có thể yêu cầu, đổi mới hoặc thu hồi chứng chỉ cho tên miền đó.
Xác nhận tên miền:
Let's Encrypt xác định quyền quản trị máy chủ bằng khóa công khai. Lần đầu tiên, phần mềm quản lý tương tác với Let's Encrypt, nó tạo ra một cặp khóa mới và chứng minh với Let's Encrypt CA rằng máy chủ đang kiểm soát một hoặc vài tên miền. Điều này cũng tương tự như quá trình CA truyền thống tạo tài khoản và thêm tên miền vào tài khoản đó.
Để khởi động quá trình này, trình quản lý yêu cầu Let's Encrypt CA cung cấp thông tin cần thiết để chứng minh rằng nó đang kiểm soát example.com. Let's Encrypt sẽ xem xét và đưa ra các yêu cầu, bạn cần hoàn thành nó để chứng minh mình có quyền kiểm soát tên miền. Bạn có hai lựa chọn:
- Cung cấp một bản ghi DNS dưới tên example.com
- Cung cấp nguồn HTTP dưới URL được biết đến trên //example.com/
Sau khi hoàn thành các yêu cầu, Let's Encrypt sẽ cung cấp cho trình quản lý chứng chỉ một cặp khóa riêng để chứng minh rằng nó kiểm soát cặp khóa.
Đến đây, trình quản lý đặt một tập tin trên đường dẫn được chỉ định trên trang web //example.com. Trình quản lý cũng ký một khóa riêng, sau khi hoàn thành sẽ thông báo cho CA rằng nó đã hoàn thành xác nhận.
Công việc tiếp theo của CA là kiểm tra xem các yêu cầu đưa ra đã được thỏa mãn hay chưa. CA xác minh chữ ký, cố gắng tải về tập tin từ máy chủ web và chắc chắn rằng nó sẽ lấy được nội dung mong muốn.
Nếu chữ ký hợp lệ, các yêu cầu đã được thỏa mãn, trình quản lý được xác định bằng khóa công khai được ủy quyền để làm quản lý chứng chỉ cho example.com. Cặp khóa mà trình quản lý sử dụng cho example.com được gọi là “cặp khóa ủy quyền”.
Cấp chứng chỉ và thu hồi
Khi trình quản lý có được “cặp khóa ủy quyền” thì việc yêu cầu, đổi mới, thu hồi chứng chỉ SSL trở nên đơn giản, chỉ cần gửi thông điệp quản lý chứng chỉ và ký với cặp khóa ủy quyền.
Để có được chứng chỉ cho tên miền, trình quản lý tạo PKCS#10 Certificate Signing Request, yêu cầu Let's Encrypt CA phát hành chứng chỉ cho example.com với một khóa công khai được chỉ định. Như thường lệ, CSR bao gồm chữ ký bằng khóa riêng tương ứng với khóa công khai trong CSR. Trình quản lý cũng ký cả CSR với khóa ủy quyền cho example.com để Let's Encrypt CA biết nó đã được ủy quyền.
Khi Let's Encrypt CA nhận được yêu cầu, nó sẽ xác minh cả hai chữ ký. Nếu tất cả mọi thứ có vẻ tốt, nó đưa ra một chứng chỉ cho example.com với khóa công khai từ CSR và trả lại cho trình quản lý.
Việc thu hồi chứng chỉ hoạt động theo cách tương tự. Trình quản lý ký yêu cầu thu hồi với cặp khóa ủy quyền cho example.com và Let's Encrypt CA xác minh rằng yêu cầu đó đúng là đã được ủy quyền. Khi đó, nó sẽ xuất thông tin thu hồi chứng chỉ vào các kênh thu hồi thông thường (như CRL, OCSP), dựa trên các bên thứ 3, như trình duyệt để chúng không chấp nhận chứng chỉ đã bị thu hồi.
Hướng dẫn tạo chứng chỉ SSL miễn phí với Let’s Encrypt
Let’s Encrypt là một lựa chọn hợp lý, miễn phí, hỗ trợ bảo mật domain của bạn khi bạn muốn test website.
Thao tác cài đặt như sau:
Bước 1: Mở truy cập SSH
Vào Control Panel của tài khoản hosting, bạn chọn Truy cập SSH.
Tại đây bạn chọn Enabled, kế tiếp chọn Cập nhật để kích hoạt truy cập SSH
Những thông tin truy cập SSH như IP, port, username, password, bạn nên nhớ kĩ để sử dụng.
Bước 2: Cài đặt ACME client và Composer
Tiến hành kết nối SSH vào tài khoản của bạn: bạn sử dụng PuTTY điền các thông tin truy cập SSH bạn vừa có được và lần lượt chạy các lệnh sau trong cửa sổ command của PuTTY
git clone //github.com/kelunik/acme-client
cd acme-client
php -r "copy('//getcomposer.org/installer', 'composer-setup.php');";
php composer-setup.php;
php -r "unlink('composer-setup.php');";
php composer.phar install --no-dev
php bin/acme setup --server letsencrypt --email your@email.com
php bin/acme issue --domains yourdomain.com,www.yourdomain.com --path /home/username/public_html --server letsencrypt
Để phù hợp với tài khoản của mình, bạn cần thay đổi your@email.com, yourdomain.com, username.
Sau đó, bạn sử dụng trình File Manager di chuyển tới
/home/username/acme-client/data/certs/acme-v01.api.letsencrypt.org.directory/yourdomain.com
Bước này sẽ tạo ra 2 file quan trọng trong tài khoản hosting.
fullchain.pem: chứa thông tin certificate của bạn
key.pem: chứa thông tin private key của bạn
Bước 3: Cài đặt SSL từ Control Panel
Sau khi đã có 2 files là fullchain.pem và key.pem, chúng ta sẽ vào mục SSL ở Control Panel
Bạn lần lượt chọn domain cần cài đặt, sao chép nội dung file fullchain.pem vào Certificate: (CRT), nội dung file key.pem vào Private Key: (KEY). Sau đó, bạn chọn Cài đặt để thực hiện.
Bước 4: Cài đặt Cronjob
Do Let’s Encrypt chỉ cung cấp xác nhận bảo mật cho tên miền của bạn trong thời hạn 90 ngày kể từ ngày tạo nên bạn cần thực hiện chạy cronjob để gia hạn SSL này.
Vào Control Panel, chọn “Cron Job nâng cao”
Cài đặt Cronjob như hình sau
php acme-client/bin/acme issue --domains yourdomain.com,www.yourdomain.com --path /home/username/public_html --server letsencrypt
Một số lưu ý khi dùng Let’s Encrypt:
- Bạn cần gia hạn sau mỗi 90 ngày.
Đây là chính sách của Let’s Encrypt và không có trường hợp nào ngoài lệ.
Let’s Encrypt đưa ra 2 nguyên nhân:
– Bảo mật: Hạn chế thiệt hại, rủi ro, bị đánh cắp khoá và chứng chỉ đã cấp phát
– Khuyến khích tự động hoá và cấp phát mới chứng chỉ là cần thiết cho việc sử dụng.
Let’s Encrypt khuyến cáo người dùng nên tự động đổi mới giấy chứng nhận mỗi 60 ngày.
- Let’s Encrypt chỉ cung cấp xác thực cho tên miền của bạn, nó chỉ phù hợp để bạn sử dụng test SSL cho website của mình. SSL này có thể gặp lỗi và website của bạn có thể không hoạt động được.
- Bạn có thể sử dụng cùng một Chứng chỉ SSL của Let’s Encrypt với nhiều tên miền khác nhau: cả subdomain, alias domain, addons domain trên Cloud Hosting …