Trong bài viết này mình sẽ thử cài đặt chứng chỉ SSL miễn phí cho website WordPress đã được cài trên Google Cloud nhé. Đồng thời cũng cấu hình để chứng chỉ SSL tự gia hạn.
Trước khi tiến hành cài đặt SSL thì bạn cần chuẩn bị:
Đăng nhập vào host(VPS) chứa website WordPress của bạn trên Google Cloud bằng SSH. Vào trang chủ Google Cloud Platform https://console.cloud.google.com, click vào menu ở góc trái bên trên.
Trong mục Compute Engine chọn VM instances.
Bạn sẽ thấy host đã cài đặt WordPress, bấm vào nút SSH để đăng nhập vào VPS và quản lý VPS bằng command line.
Sau khi bấm vào SSH thì bạn sẽ thấy cửa sổ dòng lệnh hiện ra.
Sau khi đăng nhập vào VPS bằng SSH, sử dụng lệnh sau để cài đặt CertBot Client.
wget https://dl.eff.org/certbot-auto && chmod a+x certbot-auto
CertBot Client dùng để cấp chứng chỉ SSL được sử dụng trong quá trình cài đặt.
Sau khi cài Certbot Client chúng ta sẽ tạo chứng chỉ cho website http://tenmienmoi.cf/ bằng lệnh sau
./certbot-auto certonly --webroot -w /var/www/html/ -d tenmienmoi.cf -d www.tenmienmoi.cf
Nhớ thay tên miền của bạn vào nha, tenmienmoi.cf là tên miền mình sử dụng để làm ví dụ trong bài viết trỏ tên miền về Google Cloud và cài đã cài wordpress sẵn cho tên miền này.
Sau khi chạy lệnh và qua một vài bước xác nhận, bạn sẽ thấy thông báo tạo chứng chỉ thành công. Lưu lại đường dẫn tới chứng chỉ gồm:
/etc/letsencrypt/live/tenmienmoi.cf/fullchain.pem
/etc/letsencrypt/live/tenmienmoi.cf/privkey.pem
Để cấu hình Vhost cho SSL bạn sử dụng lệnh sau để mở file default-ssl.conf
sudo nano /etc/apache2/sites-available/default-ssl.conf
Sau khi mở thì bạn sẽ thấy rất nhiều hướng dẫn để cấu hình SSL cho website của mình.
Bây giờ bạn thêm đoạn cấu hình sau để thông báo với server chuyển hướng toàn bộ truy cập về port 443 bằng giao thức HTTPS.
<Directory /var/www/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
vào giữa 2 dòng
ServerAdmin [email protected] và DocumentRoot /var/www/html
Tiếp tục tìm tới dòng sau
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Thay thế bằng 3 dòng sau
SSLCertificateFile /etc/letsencrypt/live/tenmienmoi.cf/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/tenmienmoi.cf/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/tenmienmoi.cf/chain.pem
Đừng quên thay tenmienmoi.cf bằng domain của bạn nha.
Sau khi chỉnh sửa xong bấm ctrl + o để lưu và ctrl + x để thoát trình chỉnh sửa.
Tiếp theo là cấu hình file wordpress.conf bằng lệnh sau.
sudo nano /etc/apache2/sites-available/wordpress.conf
Xoá 3 dòng mặc định sau
Options -Indexes
Chèn toàn bộ đoạn sau vào
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/html ServerName www.tenmienmoi.cf ServerAlias tenmienmoi.cf Redirect permanent / https://tenmienmoi.cf/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/html/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
nhớ thay tenmienmoi.cf bằng domain của bạn.
Lưu file wordpress.conf (ctrl + o) và thoát trình chỉnh sửa (ctrl + x).
Ok sau khi chỉnh sửa xong sử dụng 3 lệnh sau liên tục để các thay đổi trên có hiệu lực.
Kích hoạt Virtual host
sudo a2ensite default-ssl
Kích hoạt module ssl
sudo a2enmod ssl
Khởi động lại Apache server để các thay đổi có hiệu lực.
sudo service apache2 restart
Bây giờ mở tenmienmoi.cf trên trình duyệt bạn sẽ thấy đường dẫn của website đã thành https://tenmienmoi.cf
Đăng nhập vào website của bạn, vào mục Setting >> General sửa lại đường dẫn của website.
Save Change để lưu lại cài đặt, và website WordPress của bạn đã được cài SSL rồi nhé.
Sau khi cài đặt SSL cho wordpress, ta sẽ cấu hình tiếp để cho chứng chỉ SSL sẽ tự động gia hạn.
Đầu tiên là chuyển bộ cài Cerbot vào thư mục Let’s Encrypt bằng lệnh:
sudo mv certbot-auto /etc/letsencrypt/
Tiếp theo mở crontab bằng lệnh sau
sudo crontab -e
Nếu có thông báo như ở dưới ta chọn số 1 rồi Enter là đc.
[email protected]:~$ sudo crontab -e
no crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
Choose 1-3 [1]: 1
Sau khi mở file crontab thêm đoạn mã sau dưới cùng của file
0 0 * * 6 cd /etc/letsencrypt/ && ./certbot-auto renew && /etc/init.d/apache2 restart
Đoạn mã trên sẽ thông báo cho server của bạn kiểm tra gia hạn chứng chỉ một lần mỗi tuần và tự động gia hạn chứng chỉ nếu chứng chỉ sắp hết hạn. Nhớ lưu file crontab (ctrl + o) và thoát (ctrl + x).