HocVPS không tích hợp tính năng cài đặt chứng chỉ Let’s Encrypt. Do vậy bạn cài đặt thủ công như hướng dẫn này bên hocvps.
Nhưng hướng dẫn đó khá phức tạp.
Trong bài này mình sẽ hướng dẫn bạn cách cài đặt chứng chỉ Let’s Encrypt SSL sử dụng Certbot. Nó đơn giản và phù hợp với những bạn mới làm quen VPS.
Chúng ta cùng bắt đầu.
Cài đặt Certbot
Đầu tiên bạn cài đặt Certbot sử dụng các câu lệnh sau:
1 2 |
yum install epel-release yum install certbot-nginx |
Cài đặt chứng chỉ Let’s Encrypt SSL sử dụng Cerbot
Bạn sử dụng lệnh sau để cài đặt chứng chỉ:
1 |
certbot --nginx -d khamphaso.com -d www.khamphaso.com |
Bạn cần nhập vào địa chỉ email và trả lời một số câu hỏi như sau:
Gia hạn chứng chỉ Let’s Encrypt tự động
1 2 |
export VISUAL=nano; crontab -e 15 3 * * * /usr/bin/certbot renew --quiet |
Bật tính năng HTTP/2
Phần cấu hình Certbot thêm vào nginx lại không hỗ trợ HTTP/2. Bạn mở file cấu hình lên:
1 |
nano /etc/nginx/conf.d/khamphaso.com.conf |
Rồi thêm http2 vào 2 đoạn có
Đồng thời bạn chuyển http thành https ở dòng rewrite:
Bật tính năng HTTP/2 cho NGINX và tối ưu HTTPS
Nginx đang có vấn đề với HTTP2. Bạn có thể xem rõ hơn trong bài viết này.
HocVPS có bài bật tính năng HTTP2. Bạn xem ở đây.
Nhưng mình thích cài biên dịch Nginx từ Vultr.
Mình sẽ hướng dẫn bạn cách làm này.
Cài đặt Developer Tools:
1 |
yum groupinstall -y 'Development Tools' |
Tải và cài đặt các thư viện Nginx phụ thuộc
1 |
yum install -y perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel GeoIP GeoIP-devel |
Tải và giải nén phiên bản mainline mới nhất của Nginx:
1 2 |
cd /root/ wget https://nginx.org/download/nginx-1.13.2.tar.gz && tar zxvf nginx-1.13.2.tar.gz |
Tải các thư viện sẽ biên dịch cùng với Nginx
1 2 3 4 5 6 7 8 |
# PCRE version 8.40 wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz && tar xzvf pcre-8.40.tar.gz # zlib version 1.2.11 wget https://www.zlib.net/zlib-1.2.11.tar.gz && tar xzvf zlib-1.2.11.tar.gz # OpenSSL version 1.1.0f wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz && tar xzvf openssl-1.1.0f.tar.gz |
Loại bỏ các file .tar.gz
1 |
rm -rf *.tar.gz |
Đi tới thư mục source code của Nginx:
1 |
cd ~/nginx-1.13.2 |
Copy trang sổ tay của Nginx tới /usr/share/man/man8
:
1 2 |
cp ~/nginx-1.13.2/man/nginx.8 /usr/share/man/man8 gzip /usr/share/man/man8/nginx.8 |
Biên dịch và cài đặt Nginx:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
./configure --prefix=/etc/nginx \ --sbin-path=/usr/sbin/nginx \ --modules-path=/usr/lib64/nginx/modules \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/run/nginx.lock \ --user=nginx \ --group=nginx \ --build=CentOS \ --builddir=nginx-1.13.2 \ --with-select_module \ --with-poll_module \ --with-threads \ --with-file-aio \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_xslt_module=dynamic \ --with-http_image_filter_module=dynamic \ --with-http_geoip_module=dynamic \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_auth_request_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_degradation_module \ --with-http_slice_module \ --with-http_stub_status_module \ --http-log-path=/var/log/nginx/access.log \ --http-client-body-temp-path=/var/cache/nginx/client_temp \ --http-proxy-temp-path=/var/cache/nginx/proxy_temp \ --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \ --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \ --http-scgi-temp-path=/var/cache/nginx/scgi_temp \ --with-mail=dynamic \ --with-mail_ssl_module \ --with-stream=dynamic \ --with-stream_ssl_module \ --with-stream_realip_module \ --with-stream_geoip_module=dynamic \ --with-stream_ssl_preread_module \ --with-compat \ --with-pcre=../pcre-8.40 \ --with-pcre-jit \ --with-zlib=../zlib-1.2.11 \ --with-openssl=../openssl-1.1.0f \ --with-openssl-opt=no-nextprotoneg \ --with-debug make sudo make install |
Khởi động lại Nginx:
1 |
systemctl restart nginx |
Check lại phiên bản Nginx
1 |
nginx -V |
Phiên bản OpenSSL như thế này là OK:
Kiểm tra lại bạn sẽ thấy giao thức Http/2 đã được bật:
Tối ưu Https để kiểm tra SSL Lab Test được A+ như bên dưới:
Cách tối ưu bạn xem bài này.
Bạn chỉ cần cấu hình Nginx hỗ trợ HSTS (điểm 6 trong bài) là đủ.
Thêm dòng sau vào file cấu hình Nginx và khởi động lại Nginx:
1 |
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; |
Thế là xong.
Với cách đơn giản trên đây việc cài đặt chứng chỉ Let’s Encrypt đã không còn phải cấu hình thủ công như bên hocvps nữa.