Moodle [Part 10] – Hướng dẫn cấu hình domain và cài đặt SSL cho hệ thống Moodle

30/12/2020

Trong bài viết này, Onet 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 Onet.

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 Onet 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

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, Onet 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:

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

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

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

  • 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ị

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:

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

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í

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, Onet 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ỉ.

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';

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

Thông tin về 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 Onet 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.

ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

Installing Anaconda Python on CentOS 8

Anaconda is a Python distribution designed for data science, machine learning, deep learning etc.  In this article, I...
29/12/2020

[Cobbler] Cài đặt Ubuntu16.04 bằng Cobbler

Công việc cài đặt hệ điều hành là một công việc mà dân IT hay nói đây là điều kiện...
30/12/2020

Performance Testing [Phần 5] Hướng dẫn sử dụng Gatling Report

Một trong nhưng ưu điểm của Gatling khi đánh giá với các công cụ benchmark web khác là khả năng...
30/12/2020