Đăng nhập Đăng ký website 
Dùng thử miễn phí

Cài đặt chứng chỉ SSL miễn phí Let’s Encrypt cho Domain và Subdomain

SSL (Secure Sockets Layer) đang dần trở thành một tiêu chuẩn bắt buộc cho các website để tạo ra môi trường internet an toàn hơn, giúp website bảo mật hơn, https còn là một tiêu chí xếp hạng website.

cai-dat-chung-chi-ssl-lets-encrypt

1. Chứng chỉ số SSL là gì và tại sao website cần sử dụng chúng
+ SSL (Secure Sockets Layer) là một tiêu chuẩn của công nghệ bảo mật, tiêu chuẩn này đảm bảo rằng mọi dữ liệu được truyền giữa các máy chủ web và trình duyệt của người dùng đều được mã hóa, tránh nguy cơ bị can thiệp.
+ Nếu không có SSL website có hoạt động được không: câu trả lời là có, website của bạn vẫn hoạt động bình thường, tuy nhiên từ tháng 01/2017 khi người dùng sử dụng trình Google Chorme để truy cập website thì họ sẽ nhận được cảnh báo hiện chữ Not Secure (không an toàn) kế bên đường dẫn website (xem quy định của Google tại đây https://security.googleblog.com/2016/09/moving-towards-more-secure-web.html) đây cũng là cách gián tiếp Google yêu cầu phải sử dụng SSL vì không ai muốn khi khách hàng truy cập vào website lại thấy hiện lên chữ website không an toàn (do Google Chorme chiếm 59,36% thị phần trình duyệt web - tại thời điểm viết bài).
+ Ngoài việc giúp website an toàn hơn, SSL còn là yêu cầu cần thiết để Google xếp thứ hạng cho việc SEO website.

Website đã được cài chứng chỉ SSL

2. Các loại chứng chỉ số SSL
+ Chứng chỉ DV-SSL: là chứng chỉ xác thực tên miền (Domain Validated SSL). DV SSL chỉ yêu cầu xác minh quyền sở hữu tên miền.
+ Chứng chỉ OV-SSL: là chứng chỉ xác thực tổ chức (Organization Validation SSL) dành cho các tổ chức và doanh nghiệp có độ tin cậy cao. Ngoài việc xác minh quyền sở hữu tên miền còn phải xác minh doanh nghiệp đăng ký đang tồn tại và hoạt động bình thường. Tên doanh nghiệp cũng sẽ được hiển thị chi tiết trên chứng chỉ OV được cấp.
+ Chứng chỉ EV-SSL: là chứng chỉ xác thực mở rộng (Exented Validation SSL), có độ tin cậy cao nhất, chỉ dành cho các tổ chức và doanh nghiệp đang hoạt động. Tuân thủ nghiêm ngặt các quy định của tổ chức CA-Browser Forum trong quá trình xác minh doanh nghiệp. Thanh địa chỉ của trình duyệt sẽ chuyển sang màu xanh lá cây, đồng thời hiển thị tên doanh nghiệp sở hữu website đó.
+ Wildcard SSL: là chứng chỉ dành cho các website có nhu cầu sử dụng SSL cho nhiều subdomain khác nhau. Wildcard SSL có thể chạy cho không giới hạn tên miền phụ với một chứng chỉ SSL duy nhất.
3. Chứng chỉ SSL miễn phí Let's Encrypt là gì?
Trước đây để sử dụng được SSL bạn phải đăng ký với các nhà cung cấp dịch vụ như GeoTrust, Symantec, Comodo v.v... và phải trả phí duy trì hàng năm, tuy nhiên một tổ chức là Let's Encrypt đã đứng ra cấp chứng chỉ SSL miễn phí (tất nhiên là ở mức cơ bản – free mà), giúp tất cả các website đều có thể sử dụng SSL nhằm tạo ra môi trường internet an toàn hơn.
4. Cài đặt chứng chỉ SSL Let's Encrypt trên DirectAdmin
Trong khuôn khổ bài viết này mình chỉ giới thiệu các bạn cách cài đặt chứng chỉ SSL trên Web Server (CentOS) sử dụng Control Panel DirectAdmin và Apache (là server thực tế bên mình), các hệ điều hành hoặc Control Panel khác các bạn có thể tìm hiểu thêm trên Google.
Hiện tại Let's Encrypt cung cấp 2 loại chứng chỉ là DV-SSL và Wildcard SSL, cách thức cài đặt cũng hoàn toàn khác nhau.
Lưu ý trước khi cài đặt: để cài đặt được SSL Let's Encrypt trên DirectAdmin bạn phải đảm bảo DirectAdmin phải từ phiên bản 1.5 trở lên, các bản thấp hơn không được tích hợp sẵn Let's Encrypt.
4.1 Cài đặt chứng chỉ DV-SSL Let's Encrypt: là chứng chỉ dành cho domain chính, không bao gồm subdomain trong đó, nghĩa là với loại chứng chỉ này bạn chỉ có thể chạy tên miền dạng https://tenmien.com, nếu truy cập vào https://support.tenmien.com thì SSL sẽ không hoạt động được.
Chứng chỉ này chỉ có giá trị trong 90 ngày, hết thời gian đó phải xin cấp lại, tuy nhiên quá trình này sẽ được DirectAdmin thực hiện hoàn toàn tự động bạn không phải thực hiện thêm bất kỳ thao tác nào (lưu ý sau 60 ngày Directadmin sẽ tự động xin cấp lại).
Bước 1: Cấu hình để hosting sử dụng giao thức https thay vì http

SSL Certificate
Enable Domain SSL
Config Hosting Use Https

Bước 2: Đăng ký SSL miễn phí Let's Encrypt từ DirectAdmin

Get SSL From Lets Encrypt

Sau khi nhấn Save, DirectAdmin sẽ tự động đăng ký chứng chỉ SSL sau đó hiển thị thông tin chi tiết về thời gian hết hạn và chức năng Auto-renew đã được bật.
Sau khi cài đặt xong, bạn có thể vào trang http://ssltools.com để kiểm tra.

Bước 3: Chuyển toàn bộ truy cập từ http sang https
Mở file .htaccess lên và thêm vào đoạn code sau:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]


4.2 Cài đặt chứng chỉ Wildcard SSL Let's Encrypt: là chứng chỉ dành cho domain chính và subdomain đi kèm.
Lưu ý khi sử dụng Wildcard SSL:
+ Wildcard SSL của Let's Encrypt chỉ bao gồm 1 cấp, có dạng *.tenmien.com, ví dụ: https://support.tenmien.com là hợp lệ, nhưng tên miền https://miennam.support.tenmien.com là không hợp lệ hoặc https://www.support.tenmien.com cũng không hợp lệ vì tên miền bao gồm 2 cấp, có dạng *.*.tenmien.com
+ Quy trình đăng ký Wildcard SSL đòi hỏi phải chứng thực tên miền khi cài đặt, khi bạn gửi yêu cầu cấp chứng chỉ thì Let's Encrypt sẽ trả về 1 cặp khóa, bạn cần phải tạo Record TXT cho domain với tên là _acme-challenge và giá trị là khóa trả về, chỉ khi đã được chứng thực bạn mới có thể tiếp tục hoàn tất các bước tiếp theo để được cấp chứng chỉ, do đó bạn phải có quyền truy cập vào quản lý domain.
+ Wildcard SSL có giá trị trong 90 ngày, hết thời gian này bạn phải xin cấp lại. Tại thời điểm viết bài này thì Let's Encrypt không hỗ trợ renew lại chứng chỉ đang sử dụng mà phải xin cấp mới lại chứng chỉ khi hết hạn, nghĩa là phải thực hiện lại tất cả các bước như lần đầu xin cấp chứng chỉ.
+ Để có thể Auto-renew được chứng chỉ này bạn cần phải có API để truy cập vào tên miền đang quản lý, khi đó bạn có thể tự viết script thực hiện quy trình trên.
* Các bước cài đặt Wildcard-SSL trên CentOS:
Bước 1: Cài đặt Certbot – certbot (hoặc tên cũ letsencrypt) là 1 chương trình viết bằng Python, được xây dựng để tương tác với máy chủ của Let's Encrypt nhằm giúp việc cấp chứng chỉ được dễ dàng và nhanh hơn, bạn có thể xem thông tin chi tiết tại đây https://certbot.eff.org/docs/install.html

$ wget https://dl.eff.org/certbot-auto
$ chmod a+x ./certbot-auto
$ sudo ./certbot-auto

Lưu ý: bạn có thể viết chung nhiều lệnh bằng cách sử dụng dấu && hoặc ; Ví dụ: wget https://dl.eff.org/certbot-auto && chmod a+x certbot-auto
Bước 2: Cài đặt chứng chỉ SSL

sudo ./certbot-auto --no-bootstrap certonly --manual -d tendomain.com -d *.tendomain.com --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory

Trong đó bạn thay tendomain.com thành tên domain mà bạn cần cấp chứng chỉ.
Let’s Encrypt sẽ tự động cài đặt, bạn thực hiện các yêu cầu trên màn hình, chương trình sẽ hiển thị các thông tin tương tự sau:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Cert is due for renewal, auto-renewing...
Renewing an existing certificate
Performing the following challenges:
dns-01 challenge for tendomain.com
dns-01 challenge for tendomain.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.tendomain.com with the following value:
I9Sxn0NBwwlge9GiEoHfWkH_F2UhGWImBodMY
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.tendomain.com with the following value:
nNwI1cZ8vzmd_lUIukFkWlCpDbKsK57R-JNHNyJqG7Q
Before continuing, verify the record is deployed.
(This must be set up in addition to the previous challenges; do not remove,
replace, or undo the previous challenge tasks yet. Note that you might be
asked to create multiple distinct TXT records with the same name. This is
permitted by DNS standards.)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

* Đây là bước quan trọng nhất: để xác thực domain bạn cần tạo 2 recod TXT trong phần quản lý domain của bạn với tên là _acme-challenge và giá trị là thông tin hiển thị trên màn hình.
Như ví dụ trên thì 2 giá trị đó là: I9Sxn0NBwwlge9GiEoHfWkH_F2UhGWImBodMY và nNwI1cZ8vzmd_lUIukFkWlCpDbKsK57R-JNHNyJqG7Q

Lưu ý:
+ Bạn cần phải xác thực domain trước khi tiếp tục, nếu không quá trình tiếp theo sẽ bị lỗi.
+ Nhiều DNS Server cập nhật rất chậm, có khi cả tiếng hoặc sau 24-48h mới cập nhật lại 1 lần, còn trung bình bạn chỉ cần đợi khoảng 5-10 phút là có thể Enter để tiếp tục.

Nếu cài đặt thành công bạn sẽ nhận được thông báo sau:

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/tendomain.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/tendomain.com/privkey.pem
Your cert will expire on 2019-03-26. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Đến đây là bạn đã xong công đoạn xin chứng chỉ Wildcard-SSL của Let's Encrypt
Bước 3: Cấu hình trên DirectAdmin để sử dụng chứng chỉ
Bước 3.1: Cấu hình để hosting sử dụng giao thức https thay vì http

SSL Certificate
Enable Domain SSL
Config Hosting Use Https

Bước 3.2: Cấu hình Apache sử dụng SSL cho domain trên DirectAdmin
Trong phần thông báo cài đặt SSL thành công bạn sẽ thấy đường dẫn lưu các tập tin chứa thông tin SSL
/etc/letsencrypt/live/tendomain.com/fullchain.pem
/etc/letsencrypt/live/tendomain.com/privkey.pem
/etc/letsencrypt/live/tendomain.com/cert.pem
3.2.1 Vào mục Click Here to paste a CA Root Certificate và paste nội dung của file fullchain.pem vào sau đó Save lại

Paste a CA Root Certificate
Use a CA Cert

3.2.2 Quay lại phần SSL Certificates, Chọn mục Paste a pre-generated certificate and key, lần lượt copy và paste nội dung file privkey.pem và cert.pem vào cùng vị trí số 2 sau đó Save lại

Paste a pre-generated Certificate and Key
Tới đây là bạn đã hoàn tất việc xin cấp chứng chỉ và cấu hình cho domain để sử dụng Wildcard-SSL.
Lưu ý: Bạn phải tắt chế độ Auto-renew nếu không khi hết hạn DirectAdmin sẽ tự động gia hạn lại, chứng chỉ gia hạn lại là loại DV-SSL, sẽ không chạy được Subdomain.
Disable Auto-renew SSL Lets Encypt
Sau khi cài đặt xong, bạn có thể vào trang http://ssltools.com để kiểm tra.

Bước 4: Auto-renew chứng chỉ Wildcard-SSL
Như bạn thấy trong thông báo chúc mừng ở trên, Let's Encrypt hướng dẫn để renew chỉ cần chạy lệnh certbot-auto renew, tuy nhiên chức năng này chỉ chạy được nếu bạn đăng ký chứng chỉ DV-SSL, còn với chứng chỉ Wildcard-SSL đòi hỏi phải xác thực domain mỗi lần cấp chứng chỉ (do giá trị _acme-challenge sẽ khác nhau mỗi lần cấp) bạn sẽ phải thực hiện lại toàn bộ các bước ở trên để xin chứng chỉ mới.

* Trường hợp đã cài đặt SSL nhưng khi truy cập vào website bạn thấy biểu tượng ổ khóa hình màu vàng, thay vì màu xanh đó là do trên website của bạn vẫn còn liên kết http, bạn phải thay thế toàn bộ thành https.
* Như vậy các bạn đã biết cách cài đặt các loại chứng chỉ mà Let's Encrypt cung cấp, tùy vào nhu cầu sử dụng mà bạn chọn loại chứng chỉ cho phù hợp.

Một số vấn đề thường gặp trong quá trình cài đặt:
Certbot yêu cầu phải có Python 2.7 trở lên, tuy nhiên các hệ điều hành CentOs 6 mặc định sử dụng Python 2.6 trong tất cả các dịch vụ đã cài đặt, bạn có thể cài bản Python mới hơn nhưng hệ điều hành vẫn sẽ sử dụng bản 2.6, để sử dụng bản 2.7 (hoặc mới hơn) bạn thực hiện như sau:
B1. Kiểm tra phiên bản đang sử dụng:
# python –V
Python 2.6.6
Nếu phiên bản của bạn là 2.7 hoặc lớn hơn thì bỏ qua các bước tiếp theo
B2. Download và cài Python phiên bản mới hơn

# cd /usr/etc
# wget --no-check-certificate https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz
# tar xzf Python-2.7.13.tgz
# cd Python-2.7.13
# ./configure
# make
# make insttall

B3. Tạo môi trường để sử dụng python 2.7
Sau khi cài đặt nếu bạn kiểm tra lại thì vẫn thấy báo là bản 2.6

# python –V
Python 2.6.6
# python 2.7 –V
Python 2.7.13

Như vậy python2.7 đã được cài đặt nhưng hệ điều hành vẫn sử dụng bản 2.6, ta cần điều chỉnh như sau:

# which python2.7
/usr/local/bin/python2.7
alias python="/usr/local/bin/python2.7"
# python -V
Python 2.7.13

Như vậy hệ điều hành đã tạm thời chuyển qua sử dụng python 2.7, các dịch vụ khác vẫn sẽ chạy python 2.6 hoặc khi server khởi động lại mọi thứ sẽ trở về bình thường.
* Nếu muốn chuyển hẳn sang python 2.7 bạn có thể làm như sau:

# which python
/usr/bin/python
unlink /usr/bin/python
ln -s /usr/local/bin/python2.7 /usr/bin/python 

Tuy nhiên cách này chỉ nên sử dụng khi bạn nắm rõ hệ thống, vì nếu phần mềm đã cài mà không tương thích với python bản mới hơn sẽ không hoạt động được hoặc yêu cầu phải biên dịch lại.



Các tin khác
CÔNG TY TNHH THƯƠNG MẠI DỊCH VỤ THƯƠNG HIỆU TRỰC TUYẾN
Address: 216/14 Bùi Văn Ba, Phường Tân Thuận Đông, Quận 7, Tp.HCM 
Số CNKD: 0310575921 - Ngày cấp: 12/01/2011 - Nơi cấp: Tp.HCM
Hotline: 0908.622.880 - Email: info@thuonghieuonline.vn
Hotline: 0908.622.880 (Mr. Dũng) - Zalo: 0908622880
Email: info@thuonghieuonline.vn
Số Hotline
Zalo