Hướng dẫn cài đặt chứng chỉ SSL của Comodo

Chứng chỉ SSL PositiveSSL của Comodo là một loại Domain Validation được rất nhiều người sử dụng do chi phí rẻ, dễ dàng cài đặt, không phải yêu cầu giấy tờ xác nhận thông tin gì cả.

Trong bài viết này, mình sẽ hướng dẫn các bạn cách cài đặt chứng chỉ PositiveSSL trên máy chủ sử dụng Nginx. Với Let’s Encrypt thì các bạn xem bài hướng dẫn này.

Nếu bạn chưa đăng ký chứng chỉ SSL, hãy tham khảo khuyến mại SSL trên blog Canh Me.

1. Generate chứng chỉ

Sau khi đăng ký SSL, bạn cần phải tiến hành generate 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 Key), hãy cẩn thận lưu lại Private Key này để sử dụng ở bước bên dưới. Tùy chỗ bạn đăng ký chứng chỉ mà có hỗ trợ chức năng tự động generate key khác nhau.

Format private key có dạng:

-----BEGIN PRIVATE KEY-----
 MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDXCvdAoLtG5QRb
 GvYZ/9pOqYYUpA/rZnAAUAFyqdnMcMsYmD6W/m4J9W7/onDrQX7ExzfAKhbWy+FA
 v18S8P7arvjxnjXoS8rs4/IVwiqLy5PqispyEmlsFp19/TpJeYltVrrPofiS7/IV
 p095TH66erRgxe54BhzPI2XrurKeqSlgyMbBfgw73KaX3LP7qVcVOSEJWkz9WEhl
 RJrYwZ3s8U2iFF7ZK/wX7pVN36XM187pFg6vcIjKWdnOUmgPsOYof6d72koddiPm
 oOuDIHAd3M3i1OrhLmx1usHmbL5hj2ls9MI6LOjm15ZAGk+q7lIOsdRfAto8pgE7
 u7oB4ts/AgMBAAECggEAaLYGP4oEpzjNLi+qtm5HNxaFG3fn6JAw6XYLvnHGhC5I
 NumrUIsDugWwzvmiUmvJ9rerBf94r48HWCfXe7mt335j6gNH7J07aq50KvQpE3lF
 xWdfvLwKaX95oOe1giGUMZGR1ZjhGWuNTc3yfPYqn1Mwkg7PV9JiJNrvviFi6K5B
 vcjVNBlf44zQG4UMeZ9T/aoVFtmDifRMDQQ62MdzgJs4AE0U2+MEbN3NBySbeXID
 -----END PRIVATE KEY-----

Email gửi chứng chỉ SSL 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 canhme_com.zip gồm 2 file:

  1. canhme_com.crt
  2. canhme_com.ca-bundle

Bạn sử dụng một editor bất kỳ, ví dụ Notepad++, mở file canhme_com.crt, copy toàn bộ nội dung và paste lên trên đầu file canhme_com.ca-bundle, lưu lại thành file ssl-bundle.crt

Lúc này, file chứng chỉ ssl-bundle.crt sẽ chứa nội dung của 2 file .crt và .ca-bundle

2. Cài đặt chứng chỉ SSL

Bước này mình thao tác trên server cài đặt HocVPS 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/canhme_com/

Lưu nội dung file chứng chỉ ở thư mục này, copy/paste dùng nano

nano /etc/nginx/ssl/canhme_com/ssl-bundle.crt

Lưu nội dung Private Key chung thư mục:

nano /etc/nginx/ssl/canhme_com/canhme_com.key

Tạo file DH parameters 2048 bit, quá trình generate sẽ hơi lâu:

mkdir /etc/nginx/cert/
 openssl dhparam 2048 -out /etc/nginx/cert/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/canhme.com.conf

Mở file cấu hình lên với nano

nano /etc/nginx/conf.d/canhme.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 http2;

+ Sau dòng server_name canhme.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/canhme_com.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';
 
         ## OCSP Stapling
         resolver 127.0.0.1;
         ssl_stapling on;
         ssl_stapling_verify on;
         ssl_trusted_certificate /etc/nginx/ssl/canhme_com/ssl-bundle.crt;
 
         # Improve HTTPS performance with session resumption
         ssl_session_cache shared:SSL:50m;
         ssl_session_timeout 1d;
       
         # DH parameters
         ssl_dhparam /etc/nginx/cert/dhparam.pem;
 
         # Enable HSTS (https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security)
         add_header Strict-Transport-Security "max-age=31536000" always;
 

Redirect toàn bộ link www http sang https

Trong block server { ... } ở phía trên cùng:

+ Chuyển server_name www.canhme.com; thành server_name canhme.com www.canhme.com;

+ Chuyển rewrite ^(.*) http://canhme.com$1 permanent; thành rewrite ^(.*) https://canhme.com$1 permanent;

Kết quả được như sau:

server {
 	listen   80;
 	server_name canhme.com www.canhme.com;
 	rewrite ^(.*) https://canhme.com$1 permanent;
 }

Lúc này khi truy cập http://canhme.com và http://www.canhme.com sẽ tự động redirect sang https://canhme.com

Redirect toàn bộ link www https sang https

Thêm mới block server { ... } ở trên cùng

server {
 	listen   443 ssl http2;
 	server_name www.canhme.com;
 
 	# SSL
         ssl_certificate /etc/nginx/ssl/canhme_com/ssl-bundle.crt;
         ssl_certificate_key /etc/nginx/ssl/canhme_com/canhme_com.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://canhme.com$1 permanent;
 }

Lúc này khi truy cập https://www.canhme.com sẽ tự động redirect sang https://canhme.com

Cấu hình SSL với port quản lý HocVPS Script Admin

Nếu bạn cài đặt SSL cho tên miền chính sử dụng HocVPS Script, cần thêm cấu hình SSL khi sử dụng port. Ví dụ khi cài đặt mình để port mặc định 2313.

Tìm block server { ... } có dòng listen 2313;

Thêm chữ ssl và đoạn cấu hình SSL tương tự như bên dưới:

server {
 	listen   2313 ssl http2;
  	access_log        off;
 	log_not_found     off;
  	error_log         off;
     	root /home/canhme.com/private_html;
 	index index.php index.html index.htm;
     	server_name canhme.com;
  	
         error_page 497 https://$host:2313$request_uri;
         # SSL
         ssl_certificate /etc/nginx/ssl/canhme_com/ssl-bundle.crt;
         ssl_certificate_key /etc/nginx/ssl/canhme_com/canhme_com.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/canhme.com/private_html/hocvps/.htpasswd;
 	
 	...

Lúc này link login HocVPS Script Admin sẽ là https://canhme.com:2313

File cấu hình Nginx cuối cùng sẽ tương tự như sau:

server {
 	listen   443 ssl http2;
 	server_name www.canhme.com;
 
 	# SSL
         ssl_certificate /etc/nginx/ssl/canhme_com/ssl-bundle.crt;
         ssl_certificate_key /etc/nginx/ssl/canhme_com/canhme_com.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://canhme.com$1 permanent;
 }
 server {
 	listen   80;
 	server_name canhme.com www.canhme.com;
 	rewrite ^(.*) https://canhme.com$1 permanent;
 }
 server {
 	listen   443 ssl http2;
 		
 	access_log off;
 	# access_log /home/canhme.com/logs/access.log;
 	error_log off;
     	# error_log /home/canhme.com/logs/error.log;
 	
     	root /home/canhme.com/public_html;
 	index index.php index.html index.htm;
     	server_name canhme.com;
 	
 	# SSL
         ssl_certificate /etc/nginx/ssl/canhme_com/ssl-bundle.crt;
         ssl_certificate_key /etc/nginx/ssl/canhme_com/canhme_com.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';
 
         ## OCSP Stapling
         resolver 127.0.0.1;
         ssl_stapling on;
         ssl_stapling_verify on;
         ssl_trusted_certificate /etc/nginx/ssl/canhme_com/ssl-bundle.crt;
 
         # Improve HTTPS performance with session resumption
         ssl_session_cache shared:SSL:50m;
         ssl_session_timeout 1d;
 
         # DH parameters
         ssl_dhparam /etc/nginx/cert/dhparam.pem;
 
         # Enable HSTS (https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security)
         add_header Strict-Transport-Security "max-age=31536000" always;
  
     	location / {
 		try_files $uri $uri/ /index.php?$args;
 	}
 	
 	# Custom configuration
 	include /home/canhme.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/canhme.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/canhme.com/public_html$fastcgi_script_name;
 		include /etc/nginx/fastcgi_params;
                 allow 127.0.0.1;
                 deny all;
     	}
 	location ~ /. {
 		deny all;
 	}
         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   2313 ssl http2;
  	access_log        off;
 	log_not_found     off;
  	error_log         off;
     	root /home/canhme.com/private_html;
 	index index.php index.html index.htm;
     	server_name canhme.com;
         error_page 497 https://$host:2313$request_uri;
 	# SSL
         ssl_certificate /etc/nginx/ssl/canhme_com/ssl-bundle.crt;
         ssl_certificate_key /etc/nginx/ssl/canhme_com/canhme_com.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/canhme.com/private_html/hocvps/.htpasswd;
 	
 	location / {
 		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/canhme.com/private_html$fastcgi_script_name;
     	}
 	
 	location ~ /. {
 		deny all;
 	}
 }

Kiểm tra lại cấu hình Nginx xem đã chuẩn chưa

nginx -t

Khởi động lại Nginx

service nginx restart

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.

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: http://hocvps.com/cai-dat-chung-chi-ssl-cua-comodo/

Add Comment