Nội dung bài viết
Sau khi đăng ký SSL, bạn cần phải tiến hành kích hoạt thì mới nhận được file chứng chỉ.
Ở bước này, bạn cần phải cung cấp Private Key và CSR file, hãy cẩn thận lưu lại Private Key này để sử dụng ở bước bên dưới. Bạn sẽ được yêu cầu cung cấp nội dung file CSR khi kích hoạt SSL.
Để có 2 key này bạn sử dụng công cụ Tạo CSR Online của Học VPS hoặc dùng lệnh openssl
trên server Linux:
openssl req -new -newkey rsa:2048 -nodes -keyout example_com.key -out example_com.csr
Sau đó bạn sẽ nhận được 2 file:
Kết thúc bước này chúng ta sẽ có file ssl-bundle.crt, thứ tự các file thao tác ở bước này rất quan trọng, bạn cần lưu ý thực hiện theo cho chuẩn.
Nếu kích hoạt chứng chỉ SSL thành công, email gửi từ Comodo có tiêu đề tương tự như sau: “Your PositiveSSL Certificate for canhme.com“, trong mail có đính kèm 1 file nén atcsmart_com.zip, lúc này có thể có 2 trường hợp.
– File nén .ZIP gồm 2 file:
Bạn dùng text editor, tạo file mới ssl-bundle.crt chứa nội dung của 2 file, thứ tự lần lượt: atcsmart_com.crt > atcsmart_com.ca-bundle
– File nén .ZIP gồm 3 file:
atcsmart_com.crt
COMODO_RSA_Certification_Authority.crt
AddTrust_External_CA_Root.crt
Bạn dùng text editor, tạo file mới ssl-bundle.crt chứa nội dung của 3 file, thứ tự lần lượt:
atcsmart_com.crt > COMODO_RSA_Certification_Authority.crt > AddTrust_External_CA_Root.crt
Hoặc chạy lệnh sau:
cat atcsmart_com.crt COMODO_RSA_Certification_Authority.crt AddTrust_External_CA_Root.crt > ssl-bundle.crt
– File nén .ZIP gồm 4 file:
atcsmart_com.crt
COMODORSADomainValidationSecureServerCA.crt
COMODORSAAddTrustCA.crt
AddTrustExternalCARoot.crt
Bạn dùng text editor, tạo file mới ssl-bundle.crt chứa nội dung của 4 file, thứ tự lần lượt: atcsmart_com.crt > COMODORSADomainValidationSecureServerCA.crt > COMODORSAAddTrustCA.crt > AddTrustExternalCARoot.crt
Hoặc chạy lệnh sau:
cat atcsmart_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > ssl-bundle.crt
– File nén .ZIP gồm 6 file (Sectigo Comodo):
atcsmart_com.crt
atcsmart.com.key
USERTrustRSAAddTrustCA.crt
SectigoRSADomainValidationSecureServerCA.crt
My_CA_Bundle.ca-bundle
AddTrustExternalCARoot.crt
Bạn dùng text editor, tạo file mới ssl-bundle.crt
chứa nội dung của 4 file, thứ tự lần lượt: atcsmart_com.crt > SectigoRSADomainValidationSecureServerCA.crt > USERTrustRSAAddTrustCA.crt > AddTrustExternalCARoot.crt
Hoặc chạy lệnh sau:
cat atcsmart_com.crt SectigoRSADomainValidationSecureServerCA.crt USERTrustRSAAddTrustCA.crt AddTrustExternalCARoot.crt >> ssl-bundle.crt
Và file atcsmart.com.key chính là Private Key của chứng chỉ
Với chứng chỉ SSL của GoDaddy, file nén sẽ gồm 2 file, ví dụ:
9981e0dcd97c0b37.crt
gdig2_bundle.crt
Bạn dùng text editor, tạo file mới ssl-bundle.crt chứa nội dung của 2 file, thứ tự lần lượt: 9981e0dcd97c0b37.crt > gdig2_bundle.crt
Bước này mình thao tác trên server cài đặt Script, với server cài đặt thủ công hoặc các server Nginx khác cách làm cũng tương tự bạn cứ đọc thật kĩ là hiểu. Vướng mắc chỗ nào để lại comment mình sẽ support luôn.
Tạo thư mục chứa file chứng chỉ:
mkdir -p /etc/nginx/ssl/atcsmart_com/ && cd /etc/nginx/ssl/atcsmart_com/
Lưu nội dung file chứng chỉ ở thư mục này, copy/paste dùng nano
nano ssl-bundle.crt
Lưu nội dung Private Key chung thư mục:
nano private.key
Kiểm tra độ trùng khớp của chứng chỉ và Private Key, trùng mã MD5 là okie
# openssl x509 -noout -modulus -in ssl-bundle.crt | openssl md5
(stdin)= 334d84440715d4dc1c96ddbcf71a0f8e
# openssl rsa -noout -modulus -in private.key | openssl md5
(stdin)= 334d84440715d4dc1c96ddbcf71a0f8e
Tạo file DH parameters 2048 bit, quá trình generate sẽ hơi lâu (tạo một lần duy nhất cho 1 VPS)
openssl dhparam 2048 -out /etc/nginx/ssl/dhparam.pem
Tiếp theo, 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à canhme.com
thì file cấu hình sẽ có đường dẫn là /
etc/nginx/conf.d/
atcsmart.com.conf
Chỉnh sửa cấu hình Nginx domain với Nano Editor
nano /etc/nginx/conf.d/atcsmart.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 atcsmart.com; thêm đoạn cấu hình SSL đã được mình tối ưu:
# SSL
ssl_certificate /etc/nginx/ssl/canhme_com/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/canhme_com/private.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
# 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.atcsmart.com; thành server_name atcsmart.com www.atcsmart.com;
+ Chuyển rewrite ^(.*) http://atcsmart.com$1 permanent; thành rewrite ^(.*) https://atcsmart.com$1 permanent;
Kết quả được như sau:
server {
listen 80;
server_name atcsmart.com www.atcsmart.com;
rewrite ^(.*) https://atcsmart.com$1 permanent;
}
Lúc này khi truy cập https://atcsmart.com và http://www.atcsmart.com sẽ tự động redirect sang https://atcsmart.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.atcsmart.com;
# SSL
ssl_certificate /etc/nginx/ssl/atcsmart_com/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/atcsmart_com/private.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
rewrite ^(.*) https://atcsmart.com$1 permanent;
}
Lúc này khi truy cập https://www.atcsmart.com sẽ tự động redirect sang https://atcsmartcom
Cấu hình SSL với port quản lý VPS Script Admin
Lưu ý: Chỉ thiết lập đối với domain chính cài VPS – 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 ẩn IP thì không được làm bước này. Nếu bạn không muốn dùng IP, chỉ muốn dùng domain để truy cập khu vực VPS Script Admin thì hãy thao tác như bên dưới.
Ví dụ khi cài đặt mình để port mặc định 2018.
Tìm block cuối cùng server { ... } có dòng listen 2018;
Thêm chữ ssl và đoạn cấu hình SSL tương tự như bên dưới:
server {
listen 2018 ssl;
access_log off;
log_not_found off;
error_log off;
root /home/atcsmart.com/private_html;
index index.php index.html index.htm;
server_name atcsmart.com;
error_page 497 https://$server_name:$server_port$request_uri;
# SSL
ssl_certificate /etc/nginx/ssl/atcsmart_com/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/atcsmart_com/private.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
auth_basic "Restricted";
auth_basic_user_file /home/atcsmart.com/private_html/hocvps/.htpasswd;
...
Lúc này link login VPS Script Admin sẽ là https://atcsmart.com:2020, không sử dụng IP nữa.
File cấu hình Nginx cuối cùng sẽ tương tự như sau:
server {
listen 443 ssl;
server_name www.atcsmart.com;
# SSL
ssl_certificate /etc/nginx/ssl/atcsmart_com/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/atcsmart_com/private.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
rewrite ^(.*) https://atcsmart.com$1 permanent;
}
server {
listen 80;
server_name atcsmart.com www.atcsmart.com;
rewrite ^(.*) https://atcsmart.com$1 permanent;
}
server {
listen 443 ssl default_server;
# access_log off;
access_log /home/atcsmart.com/logs/access.log;
# error_log off;
error_log /home/atcsmart.com/logs/error.log;
root /home/atcsmart.com/public_html;
index index.php index.html index.htm;
server_name atcsmart.com;
# SSL
ssl_certificate /etc/nginx/ssl/atcsmart_com/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/atcsmart_com/private.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
# 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/atcsmart.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/atcsmart.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/atcsmart.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/atcsmart.com/logs/nginx_error.log;
root /home/atcsmart.com/private_html;
index index.php index.html index.htm;
server_name atcsmart.com;
error_page 497 https://$server_name:$server_port$request_uri;
# SSL
ssl_certificate /etc/nginx/ssl/atcsmart_com/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/atcsmart_com/private.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
auth_basic "Restricted";
auth_basic_user_file /home/atcsmart.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/atcsmart.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:
_ Cloudflare: Để kết hợp sử dụng CDN Cloudflare (biểu tượng đám mây vàng):
ip:port
Kiểm tra lại cấu hình Nginx xem đã chuẩn chưa
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Reload lại Nginx : service nginx reload
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, 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.
Giờ truy cập vào domain để tận hưởng thành quả thôi. Chúc bạn thành công.
Nguồn : hocvps.com