Trong bài viết này, Cloud365 sẽ hướng dẫn các bạn cấu hình domain cho Moodle để có một trang Moodle hoàn thiện với domain và chứng chỉ SSL.

Sử dụng template moodle tại Cloud365.

MỤC LỤC

Chuẩn bị

1. Sở hữu một domain

Hướng dẫn này sẽ sử dụng domain trên Zone DNS.

  • Thông tin về domain, cũng như mật khẩu truy cập sẽ có trong email mà bạn dùng để mua domain
  • Trong hướng dẫn dưới đây là domain : workfromhome.vn

2. Sở hữu VPS trên Portal của Cloud365 và cài đặt Moodle trên CentOS-7

  • Thông tin về tài khoản Portal sẽ được cung cấp qua email bạn đăng kí
  • IP public được đặt cho VPS
Giao diện quản lí máy chủ trên Portal Cloud365

Lưu ý : Nếu chưa cài đặt Moodle. Bạn có thể xem hướng dẫn cài đặt Moodle tại :

Mục tiêu

Trong bài viết này, Cloud365 sẽ hướng dẫn bạn thực hiện việc cấu hình domain và cài đặt SSL bằng Let’s Encrypt cho hệ thống Moodle

  • Trỏ sub-domain e-learning.workfromhome.vn về IP public của VPS
  • Sau khi thành công thì truy cập e-learning.workfromhome.vn sẽ dẫn tới trang Moodle được cài trên VPS của bạn
  • Cài đặt chứng chỉ SSL bằng Let’s Encrypt cho hệ thống Moodle của bạn

Các bước thực hiện cấu hình domain cho Moodle

Bước 1: Truy cập Moodle bằng địa chỉ IP

Bước 2: Trỏ domain về IP public của VPS cài đặt Moodle

Bước 3: Xử lí cấu hình Domain trên Moodle

Bước 4: Cài đặt Let’s Encrypt cho hệ thống Moodle

Bước 1: Truy cập trang Moodle bằng IP

Khi VPS của bạn cài đặt xong Moodle, bạn sử dụng IP public của VPS để truy cập tới trang Moodle mà bạn đã cài đặt:

Giao diện trang Moodle khi truy cập bằng IP

Bước 2: Trỏ domain về IP public của VPS cài đặt Moodle

1. Truy cập Zone DNS : https://zonedns.vn/

2. Đăng nhập bằng domain và mật khẩu đã được cấp trong email -> Click Đăng nhập

Giao diện trang ZoneDNS

Đăng nhập thành công sẽ có giao diện như sau:

Giao diện trang ZoneDNS sau khi đăng nhập

3. Tạo bản ghi để trỏ sub-domain về IP của VPS đã cài sẵn Moodle

Tạo bản ghi
  • 1 – Tên record : phần sub của domain. Ở đây là e-learning
  • 2 – Loại record : Ta chọn là bản ghi A
  • 3 – Giá trị record : IP public của VPS mà bạn sở hữu
  • 4 – Giá trị TTL : Thời gian tồn tại của record cấu hình tên miền được nhớ với máy chủ DNS trung gian. Ở đây, ta để là 300

Click chọn TẠO RECORD.

4. Sau khi tạo thành công, ta sẽ thấy bản ghi được hiển thị

Bản ghi A

5. Kiểm tra việc trỏ domain bằng trang MXToolBox

Gõ domain e-learning.workfromhome.vn vào phần bản ghi A rồi Enter:

Kiểm tra việc trỏ domain

Kết quả: đã trỏ thành công domain về IP của VPS

Kết quả kiểm tra

6. Truy cập domain e-learning.workfromhome.vn

Vậy là ta đã có thể truy cập tới trang Moodle mà ta cài trên VPS bằng domain.

Việc đăng nhập vào hệ thống Moodle thì đã có thông trong email đăng kí VPS mà bạn đăng kí.

Tuy nhiên, khi truy cập bằng domain thì trình duyệt vẫn mặc định hiển thị IP public của VPS.

Bước 3: Xử lí cấu hình Domain trên Moodle

1. SSH tới VPS của bạn.

Lưu ý: Thông tin remote và ssh quản trị VPS đều được gửi trong mail đăng kí VPS của bạn

2. Sửa file /var/www/html/moodle/config.php

vi /var/www/html/moodle/config.php

Tìm đến dòng

$CFG->wwwroot   = 'http://<địa_chỉ_IP_public>'; 

Sửa thành

$CFG->wwwroot   = 'http://<domain>'; 

Ở đây, ta đổi thành $CFG->wwwroot = 'http://e-learning.workfromhome.vn';

3. Truy cập trang theo IP hay domain thì trình duyệt bây giờ sẽ hiển thị tên doamin mà bạn đăng kí

Giao diện khi truy cập bằng domain e-learning.workfromhome.vn

Bước 4: Cài đặt Let’s Encrypt cho hệ thống Moodle

Có thể thấy trang web của ta đang ở dạng http. Để tăng tính bảo mật, bạn nên thiết lập chứng nhận SSL cho trang của bạn. Ở đây, Cloud365 sẽ hướng dẫn bạn sử dụng Let’s Encrypt để tạo chứng chỉ SSL miễn phí.

1. Cài đặt SSL Let’s Encrypt

Thêm kho lưu trữ EPEL

yum install epel-release 

Cài đặt Certbot Let’s Encrypt Client

yum -y install certbot python2-certbot-apache mod_ssl 

Thiết lập chứng chỉ miễn phí từ Let’s Encrypt

certbot --apache -d e-learning.workfromhome.vn 

OUTPUT

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' tocancel): dangdohai1996@gmail.com
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Starting new HTTPS connection (1): supporters.eff.org
Obtaining a new certificatePerforming the following challenges:
http-01 challenge for e-learning.workfromhome.vn
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/httpd/conf.d/moodle-le-ssl.conf
Deploying Certificate to VirtualHost /etc/httpd/conf.d/moodle-le-ssl.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Redirecting vhost in /etc/httpd/conf.d/moodle.conf to ssl vhost in /etc/httpd/conf.d/moodle-le-ssl.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled
https://e-learning.workfromhome.vn

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=e-learning.workfromhome.vn
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/e-learning.workfromhome.vn/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/e-learning.workfromhome.vn/privkey.pem
Your cert will expire on 2020-06-24. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* ofyour certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- 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

- We were unable to subscribe you the EFF mailing list because youre-mail address appears to be invalid. You can try again later byvisiting https://act.eff.org.

Bây giờ khi truy cập trang Moodle của mình, bạn sẽ thấy vẫn là kết nối Không bảo mật và dòng chữ Kết nối của bạn tới trang web này không đủ an toàn, dù vẫn có chứng chỉ.

Kết nối không đủ an toàn

Bạn cần chuyển hướng tất cả truy vấn trang web đến https.

4. Redirect tất cả các truy vấn tới https. Chỉnh sửa file /var/www/html/moodle/config.php

vi /var/www/html/moodle/config.php 

Tìm đến dòng

$CFG->wwwroot   = 'http://<domain>'; 

Sửa thành https

$CFG->wwwroot   = 'https://<domain>'; 

Ở đây, ta đổi thành $CFG->wwwroot = 'https://e-learning.workfromhome.vn';

Redirect về https

Kiểm tra

1. Truy cập thử lần lượt

Đều cho một kết quả giống nhau. Trang web đã được cài đặt chứng chỉ thành công và dòng chữ Kết nối an toàn

Kết nối an toàn

Thông tin về chứng chỉ

Chứng chỉ

2. Ngoài ra, bạn có thể truy cập SSLLabs theo đường dẫn https://www.ssllabs.com/ssltest/analyze.html?d=e-learning.workfromhome.vn

2. Thiết lập gia hạn tự động chứng chỉ

Chứng chỉ Let’Encrypt có thời hạn 90 ngày, nhưng nó khuyên bạn nên gia hạn chứng chỉ sau mỗi 60 ngày để hạn chế lỗi. Bạn hoàn toàn có thể đặt lịch và ra hạn bằng tay, nhưng cách tốt nhất là tự động hóa việc này.

1. Cách 1 : Let’s Encrypt cho phép bạn tự gia hạn chứng chỉ bằng cách chạy câu lệnh

certbot renew --dry-run 

OUTPUT

Saving debug log to /var/log/letsencrypt/letsencrypt.log 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Processing /etc/letsencrypt/renewal/e-learning.workfromhome.vn.conf 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
Cert not due for renewal, but simulating renewal for dry run 
Plugins selected: Authenticator apache, Installer apache 
Starting new HTTPS connection (1): acme-staging-v02.api.letsencrypt.org 
Renewing an existing certificate 
Performing the following challenges: 
http-01 challenge for e-learning.workfromhome.vn 
Waiting for verification... 
Cleaning up challenges 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
new certificate deployed with reload of apache server; fullchain is 
/etc/letsencrypt/live/e-learning.workfromhome.vn/fullchain.pem 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
** DRY RUN: simulating 'certbot renew' close to cert expiry 
**          (The test certificates below have not been saved.) 

Congratulations, all renewals succeeded. The following certs have been renewed: 
/etc/letsencrypt/live/e-learning.workfromhome.vn/fullchain.pem (success) 
** DRY RUN: simulating 'certbot renew' close to cert expiry 
**          (The test certificates above have not been saved.) 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

IMPORTANT NOTES: 
- Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. 

2. Cách 2: Thiết lập gia hạn tự động. Bạn có thể sử dụng câu lệnh

  • Chỉnh sửa crontab để tạo một công việc mới
crontab -e 
  • Thêm dòng sau vào và lưu lại
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew 

Kết luận

Trên đây là hướng dẫn của Cloud365 về cách cấu hình Domain và cài đặt đặt Let’s Encrypt cho hệ thống Moodle.

Chúc các bạn thành công.