Nếu server của bạn đang dùng HocVPS Script, hãy làm theo từng bước hướng dẫn này để cài đặt chứng chỉ SSL Let’s Encrypt miễn phí và được tự động gia hạn.
Let’s Encrypt là một nhà cung cấp chứng chỉ số SSL (Certificate Authority) hoàn toàn miễn phí, được nhiều cá nhân và tổ chức tin dùng và đặc biệt không giới hạn.
Trong bài viết này, mình sẽ hướng dẫn các bạn từng bước cài đặt chứng chỉ Let’s Encrypt trên server cài HocVPS Script (LEMP Server, CentOS 6 và 7). Nếu dùng shared hosting như Hawk Host hoặc StableHost, DreamHost, SiteGround thì mọi chuyện còn đơn giản hơn nhiều vì Let’s Encrypt đã được tích hợp sẵn trong cPanel, chỉ cần vài click là cài đặt thành công. Mời bạn tham khảo hướng dẫn cài đặt Let’s Encrypt trong cPanel.
Let’s Encrypt là chứng chỉ SSL loại Domain Validation tức là sau khi cài bạn sẽ có thanh ổ khoá màu xanh trên trình duyệt. Ngoài Let’s Encrypt còn có PositiveSSL của Comodo và Standard SSL DV của GoDaddy. cũng được rất nhiều người sử dụng.
Nếu cài xong mà thanh địa chỉ chưa hiện HTTPS màu xanh, hãy tham khảo bài Hướng dẫn cài đặt SSL “xanh hoàn hảo”
Nếu không nắm vững kiến thức kỹ thuật, hãy liên hệ sử dụng Dịch vụ Cài đặt SSL từ Học VPS.
Nội dung bài viết
1/ Cài đặt chứng chỉ Let’s Encrypt
1.2/ Phát hành chứng chỉ SSL Let’s Encrypt cho domain
3/ Cập nhật cấu hình trong Google Search Console và Analytics
4/ Tự động gia hạn Let’s Encrypt
1/ Cài đặt chứng chỉ Let’s Encrypt
1.1/ Cài đặt certbot
yum -y install certbot
1.2/ Phát hành chứng chỉ SSL Let’s Encrypt cho domain
Để phát hành chứng chỉ SSL Let’s Encrypt cho domain có rất nhiều cách, mình sẽ sử dụng option --standalone
# Stop Nginx service nginx stop # Issue SSL Let's Encrypt certbot certonly --standalone
Chờ một lúc để Let’s Encrypt cài đặt những công cụ cần thiết. Sau đó bạn hãy nhập địa chỉ email, rồi nhấn phím Enter.
Chấp nhận quy định bằng cách nhập a
, rồi nhấn tiếp Enter.
Tiếp theo bạn nhập tên miền sẽ sử dụng chứng chỉ SSL, rồi nhấn Enter. Bước này bạn chỉ nhập phiên bản non-www và www của 1 domain hoặc subdomain. Khi muốn thêm tên miền/subdomain khác bạn hãy xem hướng dẫn bên dưới.
Nếu không gặp vấn đề gì bạn sẽ gặp thông báo như bên dưới:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/hocvps.com/fullchain.pem. Your cert will expire on 2016-08-23. To obtain a new version of the certificate in the future, simply run Certbot again. - If you lose your account credentials, you can recover through e-mails sent to admin@hocvps.com. - 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
Lưu ý các thông tin mình bôi đỏ:
- /etc/letsencrypt/live/hocvps.com/: thư mục chứa các file chứng chỉ
- 2016-08-23: ngày hết hạn của chứng chỉ (90 ngày từ ngày cài)
Cài đặt chứng chỉ SSL Let’s Encrypt cho nhiều website
Nếu cần bổ sung thêm domain/subdomain muốn cài đặt Let’s Encrypt, bạn chỉ cần chạy lại lệnh bên dưới rồi nhập domain vào:
# Stop Nginx service nginx stop # Install Let's Encrypt certbot certonly --standalone
Lúc này domain mới sẽ có thêm một thư mục riêng chứa file chứng chỉ cần thiết.
2/ Cấu hình Nginx
Sau khi có các file chứng chỉ, chúng ta sẽ chỉnh lại file cấu hình Nginx. Ví dụ tên miền của mình là hocvps.com
thì file cấu hình sẽ có đường dẫn là /etc/nginx/conf.d/hocvps.com.conf
Khi làm bạn nhớ thay tương ứng hocvps.com bằng domain của bạn nhé.
Lưu ý: Chỉ cấu hình Nginx khi bạn đã phát hành thành công chứng chỉ SSL.
Tạo file DH parameters 2048 bit (tạo một lần duy nhất trên VPS)
mkdir /etc/nginx/ssl/ openssl dhparam 2048 -out /etc/nginx/ssl/dhparam.pem
Chỉnh sửa cấu hình domain bằng Nano Editor
nano /etc/nginx/conf.d/hocvps.com.conf
Cấu hình SSL xử lý các request
Trong block server { ... }
thứ 2 điều chỉnh như sau:
+ Chuyển listen 80 default_server;
thành listen 443 ssl default_server;
+ Sau dòng server_name hocvps.com;
thêm đoạn cấu hình SSL:
# SSL ssl_certificate /etc/letsencrypt/live/hocvps.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hocvps.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; # Improve HTTPS performance with session resumption ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; # DH parameters ssl_dhparam /etc/nginx/ssl/dhparam.pem; # Enable HSTS add_header Strict-Transport-Security "max-age=31536000" always;
Redirect toàn bộ www http sang https
Trong block server { ... }
ở phía trên cùng:
+ Chuyển server_name www.hocvps.com;
thành server_name hocvps.com www.hocvps.com;
+ Chuyển rewrite ^(.*) http://hocvps.com$1 permanent;
thành rewrite ^(.*) https://hocvps.com$1 permanent;
Kết quả được như sau:
server { listen 80; server_name hocvps.com www.hocvps.com; rewrite ^(.*) https://hocvps.com$1 permanent; }
Lúc này khi truy cập https://hocvps.com và http://www.hocvps.com sẽ tự động redirect sang https://hocvps.com
Redirect toàn bộ www https sang https
Thêm mới block server { ... }
ở trên cùng
server { listen 443 ssl; server_name www.hocvps.com; # SSL ssl_certificate /etc/letsencrypt/live/hocvps.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hocvps.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; rewrite ^(.*) https://hocvps.com$1 permanent; }
Lúc này khi truy cập https://www.hocvps.com sẽ tự động redirect sang https://hocvps.com
Cấu hình SSL với port quản lý HocVPS Script Admin
Lưu ý:
- Chỉ thiết lập đối với domain chính cài HocVPS – Domain phụ KHÔNG thiết lập.
- Đây chỉ là bước tùy chọn, nếu bạn sử dụng Cloudflare và kích hoạt đám mây màu vàng ẩn IP thì không làm bước này mà sử dụng link
http://IP:port
để vào khu vực quản trị HocVPS Script Admin.
Ví dụ khi cài đặt mình để port mặc định 2018
thì sẽ tìm block cuối cùng server { ... }
trong file cấu hình domain .conf có dòng listen 2018;
Cấu hình SSL cho port HocVPS tương tự như bên dưới:
server { listen 2018 ssl; access_log off; log_not_found off; error_log off; root /home/hocvps.com/private_html; index index.php index.html index.htm; server_name hocvps.com; error_page 497 https://$server_name:$server_port$request_uri; ssl_certificate /etc/letsencrypt/live/hocvps.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hocvps.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; auth_basic "Restricted"; auth_basic_user_file /home/hocvps.com/private_html/hocvps/.htpasswd; ...
Lúc này truy cập HocVPS Script Admin qua https://domain.com:2018
File cấu hình Nginx cuối cùng sẽ tương tự như sau:
server { listen 443 ssl; server_name www.hocvps.com; # SSL ssl_certificate /etc/letsencrypt/live/hocvps.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hocvps.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; rewrite ^(.*) https://hocvps.com$1 permanent; } server { listen 80; server_name hocvps.com www.hocvps.com; rewrite ^(.*) https://hocvps.com$1 permanent; } server { listen 443 ssl default_server; # access_log off; access_log /home/hocvps.com/logs/access.log; # error_log off; error_log /home/hocvps.com/logs/error.log; root /home/hocvps.com/public_html; index index.php index.html index.htm; server_name hocvps.com; # SSL ssl_certificate /etc/letsencrypt/live/hocvps.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hocvps.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; # Improve HTTPS performance with session resumption ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; # DH parameters ssl_dhparam /etc/nginx/ssl/dhparam.pem; # Enable HSTS add_header Strict-Transport-Security "max-age=31536000" always; location / { try_files $uri $uri/ /index.php?$args; } # Custom configuration include /home/hocvps.com/public_html/*.conf; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_connect_timeout 1000; fastcgi_send_timeout 1000; fastcgi_read_timeout 1000; fastcgi_buffer_size 256k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; fastcgi_param SCRIPT_FILENAME /home/hocvps.com/public_html$fastcgi_script_name; } location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } location /php_status { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/hocvps.com/public_html$fastcgi_script_name; include /etc/nginx/fastcgi_params; allow 127.0.0.1; deny all; } # Disable .htaccess and other hidden files location ~ /\.(?!well-known).* { deny all; access_log off; log_not_found off; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~* \.(3gp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso|eot|svg|ttf|woff)$ { gzip_static off; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; access_log off; expires 30d; break; } location ~* \.(txt|js|css)$ { add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; access_log off; expires 30d; break; } } server { listen 2018 ssl; access_log off; log_not_found off; error_log /home/hocvps.com/logs/nginx_error.log; root /home/hocvps.com/private_html; index index.php index.html index.htm; server_name hocvps.com; error_page 497 https://$server_name:$server_port$request_uri; ssl_certificate /etc/letsencrypt/live/hocvps.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hocvps.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; auth_basic "Restricted"; auth_basic_user_file /home/hocvps.com/private_html/hocvps/.htpasswd; location / { autoindex on; try_files $uri $uri/ /index.php; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_connect_timeout 1000; fastcgi_send_timeout 1000; fastcgi_read_timeout 1000; fastcgi_buffer_size 256k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; fastcgi_param SCRIPT_FILENAME /home/hocvps.com/private_html$fastcgi_script_name; } location ~ /\. { deny all; } }
_ Cấu hình SSL cho domain không phải domain chính trong HocVPS Script:
- Không thiết lập HocVPS Admin Port
- Bỏ tham số
default_server
bên cạnhlisten 443
_ Để kết hợp sử dụng CDN Cloudflare (biểu tượng đám mây vàng):
- Thiết lập Full (strict) trong menu Crypto SSL tại trang quản lý Cloudflare.
- Không cấu hình SSL phần Admin HocVPS. Khi đó, truy cập HocVPS Admin bằng
ip:port
- Không thể gia hạn tự động SSL Let’s Encrypt. Gia hạn thủ công 3 tháng 1 lần.
_ Cấu hình HTTP/2 tham khảo Kích hoạt HTTP/2 với Nginx.
_ Tham khảo thêm Tối ưu HTTPS trên Nginx.
Kiểm tra lại cấu hình Nginx
nginx -t
Phản hồi như sau là ok:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Khởi động lại Nginx
service nginx restart
Giờ truy cập vào domain để tận hưởng thành quả thôi.
Lưu ý:
- Bạn phải chuyển toàn bộ link image, js, css từ http:// sang https:// thì mới có biểu tượng màu xanh như demo. Xem thêm hướng dẫn.
- Nếu bạn dùng WordPress, hãy cài đặt plugin Really Simple SSL để tự động redirect http sang https và chuyển toàn bộ link .css, .js sang https. Thanh địa chỉ lúc này sẽ có màu xanh.
- Nếu không muốn dùng plugin tự động Really Simple SSL, bạn hãy tham khảo thêm Hướng dẫn cài đặt Let’s Encrypt trong cPanel để biết cách thao tác thủ công.
3/ Cập nhật cấu hình trong Google Search Console và Analytics
Phần này bắt buộc phải làm để không làm ảnh hưởng đến thứ hạng từ khóa trên Google của website, mình đã có hướng dẫn chi tiết từng bước trên Canh Me, mời bạn tham khảo tại link này.
4/ Tự động gia hạn Let’s Encrypt
Chứng chỉ Let’s Encrypt chỉ sử dụng được trong vòng 90 ngày và bạn cần phải chạy lại dòng lệnh bên dưới để gia hạn.
certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"
Tuy nhiên, mình sẽ hướng dẫn các bạn cấu hình để tự động gia hạn chứng chỉ này với crontab, như vậy chúng ta sẽ sử dụng SSL miễn phí trọn đời mà không cần phải lo về việc gia hạn nữa.
Mở file cấu hình crontab:
# EDITOR=nano crontab -e
Copy và paste đoạn code bên dưới vào cửa sổ terminal:
30 2 * * * /usr/bin/certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start" >> /var/log/le-renew.log
Nhấn Ctrl+O, Enter để lưu và Ctrl+X để thoát. Bạn nhận được thông báo sau là thành công
crontab: installing new crontab
crontab trên sẽ tự động chạy lệnh gia hạn Let’s Encrypt vào lúc 2h30 hàng ngày và kiểm tra xem đã hết hạn chưa và tiến hành gia hạn. Trước khi gia hạn sẽ stop Nginx, sau đó sẽ start lại ngay lập tức. Như vậy, gần như không ảnh hưởng gì cả đến website.
Vậy là xong, bạn có thể yên tâm sử dụng Let’s Encrypt rồi đấy.
Lưu ý: Nếu chứng chỉ không tự động gia hạn, kiểm tra theo mục 6.Một số vấn đề gặp phải
5/ Xóa chứng chỉ Let’s Encrypt
Khi bạn không sử dụng Let’s Encrypt nữa, chuyển qua sử dụng của nhà cung cấp khác và muốn xóa chứng chỉ Let’s Encrypt đã cài, hãy sử dụng lệnh bên dưới:
# Remove Let's Encrypt certbot delete
Tiếp theo nhập số thứ tự chứng chỉ tương ứng với tên miền bạn muốn xóa, nhấn Enter là mọi thứ sẽ được dọn dẹp sạch sẽ.
6/ Một số vấn đề gặp phải
Đến ngày hết hạn mà chứng chỉ Let’s Encrypt không tự động gia hạn, mặc dù crontab vẫn chạy, kiểm tra log không thấy thông tin gì đặc biệt? Chạy lệnh gia hạn thủ công thì lại được. Theo kinh nghiệm của mình thì vấn đề ở mã nguồn Let’s Encrypt hoặc PATH service
Đối với vấn đề mã nguồn, chỉ cần clone lại bộ code của Let’s Encrypt là sẽ giải quyết được vấn đề.
# cd /opt/letsencrypt && git pull
Nếu gặp thông báo lỗi thì sử dụng lệnh này: # cd /opt/letsencrypt && git reset --hard && git pull
Đối với vấn đề PATH service, các bạn chú ý những dấu hiệu sau:
Kiểm tra nội dung /var/spool/mail/root
thấy:
Failed to find executable /usr/sbin/service in PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin Unable to find pre-hook command /usr/sbin/service in the PATH. (PATH is /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
Kiểm tra nội dung /var/log/cron
thấy cronjob vẫn chạy hàng ngày. Kiểm tra nội dung /var/log/le-renew.log
và bên trong /var/log/letencrypt
không thấy gì khả nghi.
– Nguyên nhân: service không nằm trong PATH, vấn đề này gặp ở 1 số VPS.
# whereis service service: /sbin/service /usr/share/man/man8/service.8.gz
# echo $PATH /usr/bin:/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
Có thể thấy, lệnh service nằm trong /sbin/service
, không thuộc biến môi trường PATH. Crontab chỉ tìm /usr/sbin/service
và không thấy.
– Giải pháp::
Bạn cần sử dụng đường dẫn cụ thể để chạy lệnh service trong crontab. Vị trí sẽ tùy thuộc vào từng hệ thống, kiểm tra bằng # whereis service
.
Ví dụ, khi là /sbin/service
thì câu lệnh chèn vào crontab sẽ như sau:
30 2 * * * certbot renew --pre-hook "/sbin/service nginx stop" --post-hook "/sbin/service nginx start" >> /var/log/le-renew.log
– Dấu hiệu: Đến ngày hết hạn thì không thể renew, với thông báo:
Renewal configuration file /etc/letsencrypt/renewal/hocvps.com.conf produced an unexpected error: [('PEM routines', 'PEM_read_bio', 'no start line')]. Skipping. No renewals were attempted.
Hoặc expected /etc/letsencrypt/live/hocvps.com/cert.pem to be a symlink
– Nguyên nhân: Bộ chứng chỉ bị corrupt khiến Let’s Encrypt không thể đọc và renew.
Kiểm tra nội dung cert và private key:
# openssl x509 -noout -text -in /etc/letsencrypt/live/hocvps.com/cert.pem unable to load certificate 3077703404:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE # openssl rsa -noout -text -in /etc/letsencrypt/live/hocvps.com/privkey.pem -check unable to load Private Key 3078170348:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: ANY PRIVATE KEY
Kiểm tra MD5 của cert và key (trùng nhau là ok):
# openssl x509 -noout -modulus -in fullchain.pem | openssl md5 # openssl rsa -noout -modulus -in privkey.pem | openssl md5
Kiểm tra danh sách cert trong VPS
# certbot certificates Found the following certs: Certificate Name: hocvps.com Domains: hocvps.com www.hocvps.com Expiry Date: 2018-05-27 09:15:09+00:00 (VALID: 89 days) Certificate Path: /etc/letsencrypt/live/hocvps.com/fullchain.pem Private Key Path: /etc/letsencrypt/live/hocvps.com/privkey.pem -------------------------------------------------------------------------------
– Giải pháp: xóa hoàn toàn cert cũ rồi issue lại cert mới (như mục 1.)
# cd /opt/letsencrypt # ./certbot delete --cert-name hocvps.com Saving debug log to /var/log/letsencrypt/letsencrypt.log ------------------------------------------------------------------------------- Deleted all files relating to certificate hocvps.com. -------------------------------------------------------------------------------
– Nguyên nhân & Dấu hiệu:
VPS không thể kết nối ra ngoài qua giao thức HTTPS, khi đó cũng không thể issue/renew các chứng chỉ SSL. Ví dụ không thể truy cập qua HTTPS
# curl https://google.com
curl: (77) Problem with the SSL CA cert (path? access rights?)
#curl https://github.com/letsencrypt/letsencrypt
curl: (35) SSL connect error
– Giải pháp:
Đối với lỗi (77): cài đặt lại chứng chỉ trong VPS:
Bước 1: Di chuyển/Đổi tên chứng chỉ cũ
- CentOS6 chứng chỉ lưu tại
/etc/ssl/certs/ca-bundle.crt
- CentOS7 chứng chỉ lưu tại
/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
Bước 2: Cài đặt lại chứng chỉ. Khi đó, bạn có thể curl HTTPS và issue/renew chứng chỉ bình thường.
# yum reinstall -y ca-certificates
– Đối với lỗi (35) – Cập nhật NSS
# yum update nss -y
Chúc bạn thành công.
Mình có nhiều domain trên vps hocpvs script, vậy mình có thể dùng cho nhiều domain được ko bạn?
Được nhé bạn, chỉ cần chạy lại lệnh Install Let’s Encrypt rồi nhập lại toàn bộ danh sách muốn dùng là xong.
lỗi này fix sao hả a luân
– If you lose your account credentials, you can recover through
e-mails sent to ceofb.com@gmail.com.
– The following errors were reported by the server:
Domain: ceofb.com
Type: tls
Detail: Failed to connect to 104.27.181.53:443 for TLS-SNI-01
challenge
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A record(s) for that domain
contain(s) the right IP address. Additionally, please check that
you have an up-to-date TLS configuration that allows the server to
communicate with the Certbot client.
– 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.
Tắt đám mây CloudFlare đi rồi làm lại nhé.
Mình làm lại các lệnh từ đầu, tự dưng nó được tất các domain rồi.
Lúc nhập domain nhập tất cả các domain với khoảng trắng space 2 domain là đc
demo: https://thenhuahanoi.net/
Uh, đơn giản mà 😀
hi Luân!
Tình hình là mình bị 2 lỗi:
SV1 là vô phpmyadmin cứ báo lỗi k kết nối, nhưng wp vẫn chạy đc
Không thể truy cập trang web này
45.23.25.219 mất quá nhiều thời gian để phản hồi.
Tìm kiếm 219 2310 trên Google
ERR_CONNECTION_TIMED_OUT
SV2 là: truy cập trang web 1s đầu tiên là https xanh, sau đó chuyển qua màu bình thường
SV1 gửi mình link để test, để lại comment hoặc gửi qua mail đều được.
SV2 của bạn do chưa chuyển hết đường dẫn (css, js…) từ http sang https nên mới bị thế. View source để kiểm tra nha.
Luân ơi, sao mình cài SSL cho 2 website trên cùng 1 VPS mà 1 site chạy bình thường. Site kia nó cứ rederict về site bình thường ấy thôi nhỉ.
Bạn cấu hình để WordPress chuyển từ link http sang https nữa đi nhé.
Vậy là lúc nhập domain mình nhập 1 lúc cả chục cái luôn à?
Mình chạy lệnh này để điền từng cái domain một:
# Stop Nginx
service nginx stop
# Install Let’s Encrypt
cd /opt/letsencrypt
./letsencrypt-auto certonly –standalone
Chuẩn rồi.
Mình làm xong, trong /Live có đủ các domain rồi mà
Vào lại vẫn k đc, chỉ vô đc http://thenhuahanoi.net thôi
Ok rồi hả bạn 😀
Luân ơi mình tạo cho domain chính của vps thì ok rồi nhưng các domain tiếp theo thì nó k nhận
Chính > thenhuahanoi.com
phu: thenhuahanoi.net là k đc
Không nhận cụ thể như thế nào nhỉ?
Làm xong các bước rồi làm thêm cho mấy cái domain nữa mà nó k nhận
Vẫn vào bằng http bình thường Luân ơi. https://thenhuahanoi.net không vào được
Nó báo
Máy chủ này không chứng minh được rằng đó là thenhuahanoi.net; chứng chỉ bảo mật của máy chủ này là từ thenhuahanoi.com. Điều này có thể do định cấu hình sai hoặc có kẻ tấn công chặn kết nối của bạn.
Mình chưa cài wp, mới chỉ html
Bạn cần chạy lại bước cài đặt Let’s Encrypt để nhập toàn bộ domain sẽ dùng https nhé.
Thử lại coi?
Vậy là lúc nhập domain mình nhập 1 lúc cả chục cái luôn à?
Mình chạy lệnh này để điền từng cái domain một:
# Stop Nginx
service nginx stop
# Install Let’s Encrypt
cd /opt/letsencrypt
./letsencrypt-auto certonly –standalone
Anh Luân ơi em cài mà nó cứ báo lỗi này http://imgur.com/a/aQrf9
anh coi giúp em với phải làm sao
Do CloudFlare rồi, bạn tạm thời tắt đám mây đi rồi thử lại coi
Mình cài xong thì gặp lỗi như thế này http://imgur.com/a/R3gHe
Domain của mình có www. thì setup có khác gì không ad ?
Tks
Mình thấy ok rồi nhỉ?
Vâng, ko bít mò sao mà nó chạy rồi ad ơi :)) Tks ad
Hi ad, mình làm theo hướng dẫn thì khi vào web nó ra như thế này với https gạch chéo màu đỏ.
Vậy là lỗi gì vậy ad hén
http://imgur.com/pIq4nGj
Bác luân cho hỏi
http://dulichdananggiare.com.vn/wp-content/uploads/2016/07/loi.jpg
lỗi này xử lý như thế nào vậy bác luân
This site can’t be reached rồi.
sao vậy
Mình không xem được link ảnh của bạn?
đoạn nhập mail vào thì không được bác luân nhỉ
Là sao bác nhỉ?
Mình đang dùng Varnish vậy khi mình cài cái này thì có ảnh hưởng đến các cổng hay ko?
Cổng trong Domain.conf là listen 127.0.0.1:8080 default_server, vậy khi thay đổi thành 443 ssl thì nó có ảnh hưởng đến Varnish không bạn?
Varnish dùng với SSL hơi phức tạp đó, bạn nên test kĩ trước khi thao tác trên server đang hoạt động nhé
Chào Luân, mình tới bước nhập domain xong thì báo lỗi fail. Mình sử dụng cloundflair. Không biết có cách nào cài cho cloundflair không nhỉ?
Mình làm được rồi, nhưng chữ https không hiện màu xanh.
http://prntscr.com/bqznd2
Muốn chữ hiện màu xanh, toàn bộ link css, js, image site bạn phải dùng dạng https:// thay cho http://
View source để check nhé.
giải quyết đc rồi Luân, không hiểu sao file /etc/resolv.conf
bị mất dòng này
nameserver 8.8.8.8
Ok chuẩn rồi đó. Bạn lưu ý server mà restart lại có thể cần cấu hình lại cái này đó.
ping: unknown host google.com
help gap Luan oi
Cloning into ‘/opt/letsencrypt’…
fatal: unable to access ‘https://github.com/letsencrypt/letsencrypt/’: Could not resolve host: github.com; Unknown error
thua rồi 🙁
Bạn thử chạy lệnh:
ping google.com
xem thế nào? Mình nghi vấn đề ở VPS.em cài không được lỗi cả site giờ làm sao gỡ ra anh
Mình có website chạy bình thường rồi, giờ cần trỏ 1 domain khác vào nữa, nhưng trỏ vào cùng 1 ip, 1 tên miền chính chạy bt, tên miền trỏ vào thì ko hiện web. Trỏ ip đó vào 1 ip khác thì binh thường. VPS này mình có cài quét virus như trên hướng dẫn của hocvps. Ko biết có phải do nó không, và ko biết cách gỡ ra như thế nào
Bình thường chỉ cần trỏ về IP VPS là chạy rồi, bạn kiểm tra lại kĩ coi sao
sao mình trỏ domain khác về cùng 1 ip mà nó ko hiện web mà chỉ hiên trang của nginx, có bác nào biết giúp em với ạ
Bạn đã up nội dung website lên chưa? Nội dung Nginx là file index.html mặc định đó.
giờ muốn add thêm domain rồi thêm ssl cho domain đó thì làm thế nào Luân ơi
Bạn chạy lại từ đầu lệnh cài đặt, ghi đầy đủ thông tin domain là ok nhé
Dear Luan!
Mình cài đến đoạn
./letsencrypt-auto certonly –standalone
thì nhận được lỗi
Traceback (most recent call last):
File “/tmp/tmp.fw9CesmOKW/fetch.py”, line 20, in
from urllib2 import build_opener, HTTPHandler, HTTPSHandler, HTTPError
Vì centos 7x nên mình dùng lệnh systemctl stop nginx không biết có chính xác không.
Bạn dùng lệnh
systemctl stop nginx.service
thử lại coi?Không được luôn luân ơi. Check thì thấy nginx stop rồi
Luân ơi, nếu cài cho nhiều domain thì bước gia hạn đã làm một lần có cần làm lại cho những domain cài sau này không?
Không cần nhé bạn
Mỗi lần cài là phải stop nginx. Mấy website kia đứng hình
Đúng rồi, nên cài lúc nửa đêm, ít visit thôi 😀
Traceback (most recent call last):
File “/tmp/tmp.Pig5qWEAEU/fetch.py”, line 20, in
from urllib2 import build_opener, HTTPHandler, HTTPSHandler, HTTPError
ImportError: cannot import name HTTPSHandler
Mình có gởi yêu cầu sử dụng dịch vụ cài VPS nhưng chưa thấy bạn phản hồi ?
Mình đọc rồi nhưng hiện tại đang bận quá nên chưa reply ngay được. Xin lỗi bạn.
Hi Luân,
Luân xem qua giúp nhé.
Mình đã tạo crontab thành công như Luân hướng dẫn.
Nhưng mỗi thứ 2 hàng tuần, nó vẫn không tự động gia hạn Luân ơi.
Nó vẫn giữ cái ngày đăng kí đầu tiên.
[root@vultr letsencrypt]# EDITOR=nano crontab -e
crontab: installing new crontab
[root@vultr letsencrypt]#
Nếu chứng chỉ hết hạn trong vòng 30 ngày mới tự động được gia hạn bạn ạ.
Mình thấy của mình nó có thời hạn là 90 ngày từ 25/7 đến 23/10 vậy cái script ở trên nó có hoạt động ko ad ?
Nếu không với 90 ngày thì cần phải chỉnh lại như thế nào ?
Tối qua mình cài xong chạy ngon lành cành đào rồi, sáng nay dậy truy cập thử thì thấy báo là chuyển hướng quá nhiều lần.
Mình đã phải xóa hết các thay đổi trong file domain.com.conf về mặc định thì mới truy cập web lại được.
Luân có thể hướng dẫn mình cách giải quyết vấn đề này ko?
Nguyên nhân là bạn cấu hình redirect sai chỗ nào rồi. Đa phần là do Web Server đã redirect rồi, xong rồi ứng dụng (ví dụ WP) lại redirect 1 lần nữa, cứ lặp đi lặp lại…
trong file domain.com.conf mình cấu hình y như hướng dẫn và hôm qua nó chạy ngon lắm mà. Không hiểu sao sáng nay lại bị thế nữa
Đã làm thành công.
Demo: https://www.vietcoin.com/
Hi Luân,
Mình đã tạo crontab thành công như Luân hướng dẫn.
Nhưng mỗi thứ 2 hàng tuần, nó vẫn không tự động gia hạn Luân ơi.
Nó vẫn giữ cái ngày đăng kí đầu tiên.
[root@vultr letsencrypt]# EDITOR=nano crontab -e
crontab: installing new crontab
[root@vultr letsencrypt]#
Mình cài được Lets encrypt trên vpssim rồi, nhưng tới phần tạo cronjob để tự gia hạn thì trong /opt mình khôgn thấy folder letsencrypt trong đó.
Do đó không bật được chế độ tự động gia hạn. Bạn giúp mình với
Nếu bạn cài đặt như hướng dẫn này của mình thì trong /opt/ sẽ có letsencrypt
Mình thiếu đoạn cd /opt/letsencrypt
Last login: Tue Jun 7 15:45:29 2016 from 113.161.70.10
[root@miha home]# yum -y install git
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.vodien.com
* epel: mirror.smartmedia.net.id
* extras: mirror.vodien.com
* remi: mirrors.thzhost.com
* remi-php56: mirrors.thzhost.com
* remi-safe: mirrors.thzhost.com
* updates: mirror.vodien.com
Resolving Dependencies
–> Running transaction check
—> Package git.x86_64 0:1.8.3.1-6.el7_2.1 will be installed
–> Processing Dependency: perl-Git = 1.8.3.1-6.el7_2.1 for package: git-1.8.3.1-6.el7_2.1.x86_64
–> Processing Dependency: perl(Term::ReadKey) for package: git-1.8.3.1-6.el7_2.1.x86_64
–> Processing Dependency: perl(Git) for package: git-1.8.3.1-6.el7_2.1.x86_64
–> Processing Dependency: perl(Error) for package: git-1.8.3.1-6.el7_2.1.x86_64
–> Processing Dependency: libgnome-keyring.so.0()(64bit) for package: git-1.8.3.1-6.el7_2.1.x86_64
–> Running transaction check
—> Package libgnome-keyring.x86_64 0:3.8.0-3.el7 will be installed
—> Package perl-Error.noarch 1:0.17020-2.el7 will be installed
—> Package perl-Git.noarch 0:1.8.3.1-6.el7_2.1 will be installed
—> Package perl-TermReadKey.x86_64 0:2.30-20.el7 will be installed
–> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
git x86_64 1.8.3.1-6.el7_2.1 updates 4.4 M
Installing for dependencies:
libgnome-keyring x86_64 3.8.0-3.el7 base 109 k
perl-Error noarch 1:0.17020-2.el7 base 32 k
perl-Git noarch 1.8.3.1-6.el7_2.1 updates 53 k
perl-TermReadKey x86_64 2.30-20.el7 base 31 k
Transaction Summary
================================================================================
Install 1 Package (+4 Dependent packages)
Total download size: 4.6 M
Installed size: 23 M
Downloading packages:
Error downloading packages:
perl-Git-1.8.3.1-6.el7_2.1.noarch: [Errno 5] [Errno 12] Cannot allocate memory
libgnome-keyring-3.8.0-3.el7.x86_64: [Errno 5] [Errno 12] Cannot allocate memory
perl-TermReadKey-2.30-20.el7.x86_64: [Errno 5] [Errno 12] Cannot allocate memory
1:perl-Error-0.17020-2.el7.noarch: [Errno 5] [Errno 12] Cannot allocate memory
git-1.8.3.1-6.el7_2.1.x86_64: [Errno 5] [Errno 12] Cannot allocate memory
=> Cài lại git thì phần cuối cùng nó hiện vậy đó Luân ơi.
Sao lại hết memory nhỉ?
em cài cũng dính, vừa build xong cài web lên đàng hoàng
chạy lệnh này ko dc lỗi liền luôn
RAM thấp quá không khởi tạo đc môi trường ư? Bạn VPs RAm bn
Rams 512 vps digitalocean
Chạy centos 7-64bit anh
Mình cũng nghĩ do thiếu bộ nhớ rồi.
Mình làm theo trên phần 1/
đến đoạn copy: “git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt” thì nó báo là “command not found”
Mình dùng VPS của DO và tạo Droplet xong, thì chạy HocVPS luôn, rồi đưa theme lên.
Không biết có sai gì không. Luân giúp mình với nhé!
Cảm ơn Luân.
Bạn chưa cài git rồi, trong bài mình có ghi lệnh rồi đó.
Đã cài git theo bước 1 rồi Luân à. Rồi mới đến bước đó.
Muốn dùng nhiều domain thì sao Luân @@
Có một bước nhập tên miền ấy bạn
Em toàn quẩy cái này cho site vệ tinh 😀 ngon phết https đàng hoàng :)))
mình dùng sentora. Cài theo bài này
“https://www.crazytut.com/cai-dat-ssl-tren-nginx-apache-mien-phi-tu-lets-encrypt/”
Đén khi điền domain vào enter thì nó báo
“the program httpd (process ID 13458) is already listening on TCP port 80. This will prevent us from binding to that port . Please stop the httpd program temporarily and then try again.”
nhờ bạn chỉ cách khắc phục
Bạn cần stop Apache đi trước khi điền domain nhé.
mình dùng lệnh này để stop “service httpd stop”
Sau đó gõ domain thì nó báo lỗi:
“Failed authorization procedure. http://www.1doi1.com (tls-sni-01): urn:acme:error:tls :: The server experienced a TLS error during domain verification :: Failed to connect to 104.24.101.119:443 for TLS-SNI-01 challenge
IMPORTANT NOTES:
– The following errors were reported by the server:
Domain: http://www.1doi1.com
Type: tls
Detail: Failed to connect to 104.24.101.119:443 for TLS-SNI-01
challenge
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A record(s) for that domain
contain(s) the right IP address. Additionally, please check that
you have an up-to-date TLS configuration that allows the server to
communicate with the Certbot client.”
Mong bạn ad có bài hướng dẫn chi tiết với apache cho dễ làm hi
Bạn comment trên topic kia được ko, Steve Diện sẽ trả lời giúp bạn.
Nếu không được thì mình sẽ mày mò thử coi sao.
Hi Luân,
Một server có nhiều domain thì phải làm tương tự như vậy riêng cho mỗi domain hả Luân?
Có cách nào xài chung Let’s Encrypt SSL cho các domain trong VPS server không?
Mình search thấy lúc cài đặt bạn có thể nhập nhiều domain vào đó, sử dụng chung 1 chứng chỉ Let’s Encrypt. Thử xem sao nhé?
Anh Luân ơi cái này thay vps là phải cài lại hả 😀
Đúng thế nhé.
Mình không cài được, service nginx stop là web shutdown rồi nên tới đoạn
./letsencrypt-auto certonly –standalone
là nó báo lỗi Failed to connect to xxx for TLS-SNI-01 challenge
Bạn kiểm tra xem domain đã trỏ đến IP VPS chưa? Bắt buộc phải stop Nginx hoặc Apache mới cài được Let’s Encrypt đó.
Mình trỏ rồi chứ, domain đang hoạt động trên vps đó luôn mà 😀 không hiểu nổi. Chắc là do mình xài DNS của thằng cloudflare nhỉ?
Chuẩn nhé 😀
Khi cài đặt thì tắt CloudFlare đi, cài xong rồi bạn enable lại.
ad còn thiếu hướng dẫn cài plugin cho wordpress nữa mới xanh toàn trang nhé, hôm bữa mày mò mãi mới cài đc. Plugin có tên là WordPress HTTPS.
Dùng chung thằng này với Cloudflare được không bác ?
có đc bạn nhé, ở mục crypto SSL bạn chọn full là ok
Apache cấu hình như thế nào anh?
Apache thì bạn xem hướng dẫn này: https://www.crazytut.com/cai-dat-ssl-tren-nginx-apache-mien-phi-tu-lets-encrypt/
Đây, mình Build riêng cho Apache: https://goo.gl/ugdZ5W
Nó không tự redirect từ http sang https anh ạ và nó không có hiện khóa khi vào https, chỉ một số cái nó mới hiện.
Chứng tỏ cấu hình sai đoạn nào rồi, bạn kiểm tra lại kĩ hơn coi?
https://gamechoandroids.net/
chỉ xem được ảnh có khóa, còn trang bình thường không có khóa anh ạ
Luân có thể xem giúp mình nó bị lỗi gì không ?
Mình cài xong chứng chỉ rồi. Đến đoạn restart lại nginx thì nó báo lỗi thế này và cho cho bật lại nginx là sao.
nginx: [emerg] BIO_new_file(“/etc/letsencrypt/live/www.mayxongoi.org
llchain.pem”) failed (SSL: error:02001002:system library:fopen:No su
file or directory:fopen(‘/etc/letsencrypt/live/www.mayxongoi.org/ful
ain.pem’,’r’) error:2006D080:BIO routines:BIO_new_file:no such file)
nginx: configuration file /etc/nginx/nginx.conf test failed
Không thấy file cấu hình SSL trong /etc/letsencrypt/live/www.mayxongoi.org/ hoặc không có quyền đọc nội dung trong đó.
Bạn kiểm tra lại đi
Đã thành công, nhưng không hiện cái khóa anh ạ 😀
Khả năng do website vẫn còn dùng link http nào đó nên mới ko hiện khóa xanh. Bạn view-source xem thế nào?
ok anh, cảm ơn anh nhé để em coi lại
Do dữ liệu của bạn còn có http… để chuẩn hóa… thì dữ liệu bạn chỉ nên để [ // ] thay vì ghi http://.