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.
Anh ơi nếu đã bật http/2 cho nginx ở lần cài đầu tiên cho doamain, thì lần cài cho domain tiếp theo có cần cài lại bước bật http/2 đổ đi k ạ?
nếu cài theo kiểu certbot thì mỗi domain lại phải làm thủ công, còn cái đoạn lỗi nginx với http/2 thì check xem phiên bản nginx có sử dụng openssl cũ không thôi, nếu cũ thì xử lý một lần là xong. Nói chung là mình đang dùng vpssim không biết tình hình cái này thế nào rồi vì bài này mình viết cũng lâu rồi.
Mình làm lần đầu thì thành công nhưng sau đó mình xóa vps đi cài lại nhưng vẫn tên miền cũ mà ko cài được, cứ đến bước:”certbot –nginx -d bongdaso442.com -d http://www.bongdaso442.com” thì hiện lỗi “An unexpected error occurred: There were too many requests of a given type :: Error crejating new cert :: too many certificates already issued for exact set of domains:bongdaso442.com,www.bongdaso442.com Please see the logfiles in /var/log/letsencrypt for more detai” Mình nhập lệnh; “nano /etc/nginx/conf.d/bongdaso442.com.conf” thì nó ko có đoạn code sau; listen 443 ssl http2;#managed by Certbot ssl_certificate /etc/letsencrypt/live/bongdaso442.com/fullchain.pem;#managed by Certbot ssl_certificate_key /etc/letsencrypt/live/bongdaso442.com/privkey.pem;#managed by Certbot… Read more »
Khả năng bạn đạt rate limi của Let’s Encrypt. Nếu thì thì chỉ còn cách đợi một tuần để họ reset lại
Có cách nào remove hết ssl đi để cài lại từ đầu ko bạn ơi?hay bắt buộc phải đợi 1 tuần vậy bạn?
Nếu đã rate limit thì phải đợi thôi. Bạn có thể thử cài đặt vpssim xem có đúng là bị rate limit hay không. Vpssim cài ssl khá dễ vì có tính năng cài ssl trong menu.