Chứng chỉ SSL hiện nay được sử dụng quá phổ biến, hầu hết những website mới hay server mới đều lựa chọn kích hoạt SSL ngay từ ban đầu.

Quá trình cài đặt SSL trên server sẽ cần một số kiến thức kỹ thuật nhất định, trong bài viết này, mình sẽ hướng dẫn các bạn chi tiết cách cài đặt với 2 loại chứng chỉ phổ biến nhất cho tên miền là PositiveSSL từ Comodo và Standard SSL DV từ GoDaddy.

Cả 2 loại chứng chỉ này đều thuộc loại Domain Validation, được dùng rất phổ biến do chi phí rẻ, dễ dàng cài đặt, kích hoạt online không phải xác nhận giấy tờ thông tin gì.

Trong bài mình sẽ cài đặt SSL trên máy chủ Nginx cài đặt HocVPS Script, với các server LEMP khác thao tác cũng tương tự. 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.

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.

1. Kích hoạt chứng chỉ

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:

  • example_com.key — Private Key cài trên server của mình.
  • example_com.csr — file CSR để gửi cho nhà cung cấp dịch vụ SSL.

2. Tạo file Bundle

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.

a. Chứng chỉ của Comodo

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 canhme_com.zip, lúc này có thể có 2 trường hợp.

– File nén .ZIP gồm 2 file:

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

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: canhme_com.crt > canhme_com.ca-bundle

– File nén .ZIP gồm 3 file:

  1. canhme_com.crt
  2. COMODO_RSA_Certification_Authority.crt
  3. 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: canhme_com.crt > COMODO_RSA_Certification_Authority.crt > AddTrust_External_CA_Root.crt

Hoặc chạy lệnh sau:

cat canhme_com.crt COMODO_RSA_Certification_Authority.crt AddTrust_External_CA_Root.crt > ssl-bundle.crt

– File nén .ZIP gồm 4 file:

  1. canhme_com.crt
  2. COMODORSADomainValidationSecureServerCA.crt
  3. COMODORSAAddTrustCA.crt
  4. 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: canhme_com.crt > COMODORSADomainValidationSecureServerCA.crt > COMODORSAAddTrustCA.crt > AddTrustExternalCARoot.crt

Hoặc chạy lệnh sau:

cat canhme_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > ssl-bundle.crt

– File nén .ZIP gồm 6 file (Sectigo Comodo):

  1. canhme_com.crt
  2. canhme.com.key
  3. USERTrustRSAAddTrustCA.crt
  4. SectigoRSADomainValidationSecureServerCA.crt
  5. My_CA_Bundle.ca-bundle
  6. 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: canhme_com.crt > SectigoRSADomainValidationSecureServerCA.crt > USERTrustRSAAddTrustCA.crt > AddTrustExternalCARoot.crt

Hoặc chạy lệnh sau:

cat canhme_com.crt SectigoRSADomainValidationSecureServerCA.crt USERTrustRSAAddTrustCA.crt AddTrustExternalCARoot.crt >> ssl-bundle.crt

Và file canhme.com.key chính là Private Key của chứng chỉ

b. Chứng chỉ của GoDaddy

Với chứng chỉ SSL của GoDaddy, file nén sẽ gồm 2 file, ví dụ:

  1. 9981e0dcd97c0b37.crt
  2. 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

3. 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/ && cd /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 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/canhme.com.conf

Chỉnh sửa cấu hình Nginx domain với Nano Editor

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 default_server;

+ 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/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.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 https://canhme.com và http://www.canhme.com sẽ tự động redirect sang https://canhme.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.canhme.com;

	# 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';
	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
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 ẩ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 HocVPS 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/canhme.com/private_html;
	index index.php index.html index.htm;
    	server_name canhme.com;
 	
        error_page 497 https://$server_name:$server_port$request_uri;

        # 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';

	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:2018, 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.canhme.com;

	# 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';

	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 default_server;
		
	# 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/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/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;
    	}
	# 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/canhme.com/logs/nginx_error.log;
    	root /home/canhme.com/private_html;
	index index.php index.html index.htm;
    	server_name canhme.com;

        error_page 497 https://$server_name:$server_port$request_uri;

	# 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';
 
	auth_basic "Restricted";
	auth_basic_user_file /home/canhme.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/canhme.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ạnh listen 443

Cloudflare: Để 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

_ Cấu hình HTTP/2 tham khảo Kích hoạt HTTP/2 với Nginx.
_ Cấu hình OCSP Stappling tham khảo Tối ưu HTTPS trên Nginx.


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.

Comment của bạn

Lưu ý: tất cả comment đều được kiểm duyệt cẩn thận! Nếu có code bạn hãy up lên pastebin.com rồi để lại link trong comment.

397 Comments

  1. Hoàng 25 comment

    Trước khi cài ssl mình vào đc phpmyadmin để restore db mà. Sau đó mới cài ssl vào
    web thì vào dc
    Nhưng các tool nhu op, phpmyadmin của port 9999 thì ko vào dc sau khi lên ssl

    1. Việt Phương Moderator

      Done. Nếu các bạn sử dụng kèm SSL Cloudfare thì không cấu hình phần Admin Port do SSL Cloudfare không truy cập được domain:port

    1. Việt Phương Moderator

      Bạn bỏ cái default_server đi. Sửa cả phần này cho đúng với server mình : error_page 497 https://$server_name:2017$request_uri;

  2. Hùng 2 comment

    Mình mua ssl của godaddy, cài lên thấy xoay như chong chóng, không vào được website. Mình cài cho site cs-cart. Nhờ Admin hỗ trợ dùm.

  3. Minh Thanh 56 comment

    Cho mình hỏi nếu 1 VPS đã cài 3 website: 2 website đã cài let’s rồi, 1 cái còn lại mình muốn cài Comodo SSL này thì có ảnh hưởng gì không nhỉ ?

    1. Việt Phương Moderator

      Không ảnh hưởng gì bạn. Mỗi site 1 file Nginx Conf cấu hình riêng mà

  4. Thanhhaichau 1 comment

    Ôi sao mà nhiều thao tác quá vậy. Ôi cái này nó làm mình đau đầu.

  5. Thi Trương 2 comment

    Chào bạn! Mình dùng cách này để cài chứng chỉ SSL của CloudFlare được không bạn. Vì mình thấy hình như CloudFlare cũng dùng của Comodo

    1. Việt Phương Moderator

      Được bạn nhé. Bạn thay cho đúng đường dẫn vào file chứng chỉ của bạn là ok. Mà SSL Cloudfare hình như có luôn 2 file crt và key, không cần nối ghép

      1. Thi Trương 2 comment

        Bạn có thể giúp mình nói thêm đoạn này được không? Mình không hiểu lắm! Cảm ơn bạn nhiều!

        1. Việt Phương Moderator

          Đoạn này trỏ tới file SSL. Bạn khai báo tới đúng file SSL của bạn là được

          ssl_certificate /etc/nginx/ssl/canhme_com/ssl-bundle.crt;
          ssl_certificate_key /etc/nginx/ssl/canhme_com/private.key;

  6. Toan Nguyen 3 comment

    Xin chào Admin
    Cho mình hỏi email đăng ký có cần phải là email theo domain hay không.
    VD: email@domain.com, mình có thể dùng mail gmail hay cty được không, xin cảm ơn.
    Mình tạo file CSR xong thì activate SSL, không hiện được primary domain.
    Xin cảm ơn.

      1. Toan Nguyen 3 comment

        Chào anh.
        Em tạo mã csr nhưng add vào namecheap thì không hiện ra primảy domain.
        Anh có thể kiểm tra giúp em sai bước nào không.
        Anh cho em xin fb hay zalo, skype nói chuyện nhé.

        Thanks u

          1. Việt Phương Moderator

            Well noted. Bạn cũng có thể sử dụng Bitvise, có cả SSH và sFTP để tiện upload file nhỏ

          1. ken 2 comment

            Bạn ơi! sau khi cài ssl xong thì mình k restart được thằng Nginx nữa và cũng không vô được web luôn, Bạn có thể kiểm tra giúp mình hk ạ. Xin cảm ơn

  7. nate 12 comment

    [emerg] BIO_new_file(“/etc/nginx/ssl/domain_com/ssl-bundle.crt”) failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen(‘/etc/ nginx/ssl/domain_com/ssl-bundle.crt’,’r’) error:2006D080:BIO routines:BIO_new_f ile:no such file) nginx: configuration file /etc/nginx/nginx.conf test failed

    Làm đúng như hướng dẫn bị lỗi này là sao bác ơi @@

      1. ken 2 comment

        ● nginx.service – nginx – high performance web server
        Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
        Active: failed (Result: exit-code) since Fri 2020-07-03 16:18:21 +07; 17s ago
        Docs: http://nginx.org/en/docs/
        Process: 1856 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)

        Jul 03 16:18:21 cupidcase.com systemd[1]: Starting nginx – high performance web server…
        Jul 03 16:18:21 cupidcase.com nginx[1856]: nginx: [emerg] cannot load certificate “/etc/nginx/ssl/cupidcase_com/ssl-bundle.crt”: BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen(‘/etc/nginx/ssl/cupidcase_com/ssl-bundle.crt’,’r’) error:2006D080:BIO routines:BIO_new_file:no such file)
        Jul 03 16:18:21 cupidcase.com systemd[1]: nginx.service: control process exited, code=exited status=1
        Jul 03 16:18:21 cupidcase.com systemd[1]: Failed to start nginx – high performance web server.
        Jul 03 16:18:21 cupidcase.com systemd[1]: Unit nginx.service entered failed state.
        Jul 03 16:18:21 cupidcase.com systemd[1]: nginx.service failed.
        Mình cũng bị như vậy, nhưng khi kịch hoạt cái ssl mình đã có tạo thư mục.well-known và để file xác thực trong đó nhưng không hiểu sau nó lại không tìm thấy?

    1. Việt Phương Moderator

      Được bạn nhé. Bạn thay thế block SSL từ Let’s Encrypt qua SSL trả phí là ok.

  8. Lâm Văn Hiếu 10 comment

    Các bạn vui lòng cho mình hỏi nhé,

    Lúc mình cài đạt và cấu hình ssl báo thành công

    [nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful]

    Nhưng sau đó mình vào web thì không được, web của mình là https://lvhieu.com/,

    Rất mong sự hướng dẫn của các bạn,

    Xin chân thành cám ơn,

    1. Việt Phương Moderator

      Site bạn WP? Bạn còn truy cập được wp-admin không? Bạn disable các plugins bảo mật nhé

      1. Lâm Văn Hiếu 10 comment

        Cám ơn Bạn, hiện tại web mình không thể truy cập được wp-admin, mình cũng chưa cài đặt plugin bảo mật luôn, do mình đang thiết kế. Bạn vui lòng cho mình xin thêm ý kiến nhe,

        1. Việt Phương Moderator

          Thường vấn đề này gặp khi xung đột cấu hình lúc cài. Kiểu webserver Nginx cấu hình www redirect tới non-www rồi WP lại cấu hình ngược lại nên tạo ra vòng lặp (redirect loop). Bên cấu hình WP thì là trong Setting–>General
          Nếu cài xong mà không thể vào site sửa thì bạn vẫn có thể truy cập sửa qua database WP_HOME và WP_SITEURL

          1. Lâm Văn Hiếu 10 comment

            Cám ơn Bạn đã chỉ hướng cho mình, và mình cài lại server cấu hình lại ssl và làm theo bước Bạn vừa hướng dẫn mình nhưng vẫn không vào được, vps mình dùng script hocvps để cài đặt, mình rất mong bạn chỉ thêm,

          2. Việt Phương Moderator

            Done. Không sử dụng SSL chung với SSL Cloudfare (dạng Flexible) được. Nếu bạn muốn sử dụng chung phải dùng SSL Full Strict (CF account Pro).

  9. Kind 7 comment

    Bị này bạn à
    [root@kind home]# nginx -t
    nginx: [warn] “ssl_stapling” ignored, issuer certificate not found
    nginx: [warn] “ssl_stapling” ignored, issuer certificate not found
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful

    với nó vào bằng đt thì chứng chỉ k hợp lệ.PC thì bình thường

    1. Việt Phương Moderator

      1. Cert tạo ra không thích hợp sử dụng OCSP Stapling rồi. Bạn xóa 4 dòng stapling rồi reload lại nginx nhé.
      2. Bạn kiểm tra qua ssllabs.com nhé. Do việc sử dụng SSL nên một số trình duyệt cũ sẽ không có thư viện tương thích. Bạn kiểm tra bằng browser gì trên mobile?

  10. Anh tu 2 comment

    Chào Luân.
    Bạn có thể cho mình biết trên trang canhme.com bạn mua Ssl của nhà cung cấp nào được ko ?

  11. Huy Duowng 5 comment

    Các bác cho em hỏi sao em không nhận đươc mail gửi 2 file .ca-bundle và .crt nhỉ.
    Chỉ nhận được 1 file nén có 4 file khác thôi 🙁
    Xin cảm ơn!

      1. Huy Duowng 5 comment

        Minh tim hieu va cai duoc roi.
        Nhung cho minh hoi chut la sao sau khi cau hinh port xong khong dang nhap duoc vao quan tri hocvps nhi?
        Xin cam on

        1. Việt Phương Moderator

          Bạn phải cấu hình cả phần blockserver quản lý port quản trị không thì không dùng HTTPS được cho phần port quản trị (đối với cài SSL cho domain chính của VPS)
          Phần: Cấu hình SSL với port quản lý HocVPS Script Admin

  12. Pham Anh tu 1 comment

    Sao có cần chỉnh sửa Canhme.com trong code của bạn thành Domain của mình không, Phần nào cần chỉnh sửa sao bạn không bôi đỏ cho mọi người biết ?

    1. Việt Phương Moderator

      Trong bài hướng dẫn phần sửa đều bôi đỏ bạn có thể dễ dàng nhận biết

  13. Trần Đình Luật 3 comment

    Ngon lành mọi thứ, nhưng có thắc mắc là mình cài hocvps lên VPS và cài đặt SSL cho tên miền chính. Nhưng khi mở file cấu hình thì không hề có block server nào có dòng “listen 2313;” hoặc cái nào tương tự như vậy cả.

    Dẫn đến việc khi mình truy cập quản trị dạng http://ip:port thì bị báo là: “Không bảo mật”. Nó chỉ báo vậy thôi còn mọi thứ vẫn thao tác bình thường.

    Cảm ơn bạn đã chia sẻ và hi vọng nhận được phản hồi từ BQT

    1. Việt Phương Moderator

      Hình như bạn để nhiều file trong nginx conf, cụ thể có file lặp cấu hình server_name
      Bạn kiểm tra xem: # ls -al /etc/nginx/conf/

      1. Nam Duy 110 comment

        Thế có nhiều domain trên đó chạy ssl, cái cũ đg chạy lets-encrypt
        Giờ xóa đi chỉ để 1 file conf này thôi à?

        1. Việt Phương Moderator

          Bạn move ra thư mục khác đi. Nó đọc toàn bộ file conf trong thư mục mà. Nó sẽ thấy file A, B đều quy định domainX:80 thì sẽ conflict

          1. Nam Duy 110 comment

            Trong mục /etc/nginx/conf.d của mình chứa nhiều file conf cho nhiều domain đang sử dụng lets-encrypt, giờ Move qua thư mục khác thì domain cũ nó có bị lỗi ssl k ?

          2. Việt Phương Moderator

            Không, bạn hiểu sai ý mình rồi. Ý là trong thư mục /etc/nginx/conf.d có 2 file của cùng 1 domain không?

          3. Nam Duy 110 comment

            À hiểu rồi, mình có lưu 1 file cũ đổi tên đi 😛
            Kết quả đây bạn ơi:
            # nginx -t
            nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
            nginx: configuration file /etc/nginx/nginx.conf test is successful
            Tớ vô trình duyệt chưa thấy nhận ssl mới 🙁

          4. Việt Phương Moderator

            Restart nginx rồi thử bằng trình duyệt ẩn danh nhé

          5. Nam Duy 110 comment

            Do cache, mình thấy nhận rồi, cho mình hỏi thêm chút là joomla thì giờ vào đâu để sửa hết link ảnh, css các kiểu để thay bằng https cho nó k báo lỗi trên trình duyệt ssl chấm than Phương ơi

          6. Việt Phương Moderator

            Joomla mình không rõ lắm. Chắc bạn phải view source tìm rồi

  14. Nam Duy 110 comment

    Mình đang xài của -lets-encrypt chuyển qua cái này, thay đổi file conf xong test được báo thế này:
    nginx: [warn] conflicting server name “inhanoi.net” on 0.0.0.0:80, ignored
    nginx: [warn] conflicting server name “www.inhanoi.net” on 0.0.0.0:80, ignored
    nginx: [warn] conflicting server name “inhanoi.net” on 0.0.0.0:443, ignored
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful

    Giờ làm gì để nó nhận cái ssl mới Phương ơi

  15. Nguyen Vu 6 comment

    Cho mình hỏi với,mình đang dùng ssl mua ở gogetssl,positive ssl,đã cài xong,vào trang chủ thì đã hiện Secure và https,nhưng khi mình vào bài viết thì lại ko hiện Secure nữa,vẫn hiện ra là https nhưng bên cạnh lại dấu i .Ko biết thế có bình thường ko ?

      1. Nguyen Vu 6 comment

        Mình fix dc rồi,do trong các bài viết mình có chèn link ảnh nhưng để là http mới bị,đổi sang https là dc..:D

        1. Việt Phương Moderator

          Bạn phải chuyển toàn bộ link image, js, css từ http:// sang https://. View-source để xem.
          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.

          1. Nguyen Vu 6 comment

            Mọi thứ đã xong,có điều,có vẻ site mình chậm hơn khi cài ssl,ko biết có thể khắc phục phần nào ko nhỉ ?,ko biết cài cloudflare hay plugin cache có ổn hơn ko :D.

    1. Việt Phương Moderator

      Chỉ không dùng được song song chức năng ẩn IP thôi còn các tác vụ khác vẫn được bạn nhé

    1. Việt Phương Moderator

      Bạn truy cập website bị lỗi “No input file specified” à? Thế chắc bạn cấu hình thư mục root của web có vấn đề. Bạn gửi mình cấu hình file nginx conf
      Bạn paste qua http://pastebin.com cho gọn nhé

  16. nxt_88 7 comment

    Add cho em hỏi em deploy app lên server digital ocean nhưng chỉ 1-2 hôm là bị lock droplet:

    We’ve detected an outgoing Denial of Service attack (http://do.co/21Y1Gc1) originating from your Droplet. Specifically, we have detected inbound traffic exceeding 0.03 Mb/s and outbound traffic exceeding 439.71 Mb/s. Due to the traffic’s harmful nature, your Droplet was taken offline; this means it is not connected to the internet and all hosted sites and services are unreachable. We know that this action is disruptive, but it’s necessary to protect you, our network, and the target of your Droplet’s attack.

    Because this means your Droplet has been compromised, you’ll need to back up your data and transfer it to a new Droplet. We have a recovery tool to assist you, but any databases on your Droplet will need to be backed up before we boot your Droplet into the recovery tool because you won’t be able to make the backups afterwards.

    Specific backup steps vary depending on the database software in use, which is most commonly MySQL. If you’re not sure how, http://do.co/1h0uWgm will show you how to back up your databases from MySQL.

    Once you have finished backing up your data, the next step is downloading and transferring your data to your new Droplet. Please update this ticket when you’re ready and we’ll configure this Droplet so you can proceed.

    Mọi người có biết tái sao ko ?

    1. Việt Phương Moderator

      DO phát hiện VPS bạn bị DDos, inbound traffic quá 0.03Mb/s còn outbound quá 439.71 Mb/s. Vì vậy, DO đã tắt VPS bạn và ngắt kênh nối internet. Việc cần làm đầu tiên là backup data và chuyển sang cái mới để DO phục hồi droplet.
      Hoặc app bạn có làm gì ảnh hưởng quá đến băng thông không?

        1. Việt Phương Moderator

          Thế bạn reply lại ticket mô tả vấn đề cho DO, bảo sai lầm gì xem lại giúp 🙂
          Hoặc VPS bạn bị DDos, hoặc cố dò pass cổng SSH

    1. Việt Phương Moderator

      Lúc cài đặt bạn có tạo file DH parameters 2048 bit đồng thời chèn trong conf Nginx của domain không?

      1. Tran Hung 50 comment

        có, mình thực hiện đầy đủ, tất cả các bước, hôm trước check thì A giờ vào check lại thì lại là B
        # DH parameters
        ssl_dhparam /etc/nginx/cert/dhparam.pem;
        để cho chắc ăn mình xóa thư mục rồi tạo và chạy lại
        mkdir /etc/nginx/cert/
        openssl dhparam 2048 -out /etc/nginx/cert/dhparam.pem
        mà vẫn bị điểm B

        1. Việt Phương Moderator

          Ok. Phần chèn DH parameters trong Nginx conf có trong hướng dẫn đó bạn

    1. Việt Phương Moderator

      Mình nghĩ park domain dùng chung SSL với domain chính. Bản chất park domain không có file cấu hình conf Nginx riêng.
      Khi đó thì SSL đó vẫn issued cho domain chính

  17. Bao Nam 13 comment

    Mình có mua 2 SSL COMODO cho 2 domain A và B.

    Mình cài cái Aok. Đến cái B cũng làm tương tự nhưng bỏ qua bước này:

    mkdir /etc/nginx/cert/
    openssl dhparam 2048 -out /etc/nginx/cert/dhparam.pem

    Vậy có ổn không??? 2 Website vẫn đang chạy tốt
    Xin cảm ơn

    1. Việt Phương Moderator

      Phần DH parameters 2048 bit giúp bảo mật SSL Nginx tốt hơn bạn à, chứ không phải không cài thì không chạy được

      1. Bao Nam 13 comment

        Cảm ơn Việt Phương.
        Cái A mình chạy DH parameters.
        Cấu hình cái B (cái thứ 2) Mình có cần chạy lại lệnh trên để sinh ra file dhparam không ?
        Hay cứ lấy lại DH của web A dùng tiếp ạ.

        1. Việt Phương Moderator

          Nó chung cho hệ thống nên chỉ cần thêm trong cấu hình Nginx site B là được (nếu 2 site cùng VPS nhé)

  18. 52 comment

    Thank Luân rất nhiều, đây mới là bài mình cần, và đã làm được, trước đây có cài SSL của Let’s Engcrypt sau cài SSL positive comodo mua của namecheap và cài theo hướng dẫn của bác Thạch Phạm thì bị lỗi lên lỗi xuống, tý thì phải cài lại server tất cả là do mình

    mkdir /etc/nginx/cert/
    openssl dhparam 2048 -out /etc/nginx/cert/dhparam.pem

    và đoạn thiếu thứ 2 là mình cài SSL lên domain chính cài trên Server Hocvps thì không biết để
    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.

    1. nxt_88 7 comment

      bạn nói thêm cho mình với. mình cái SSL nó vào port 80. Mình muốn deploy app vào port 80 thì phải làm thê nào nhỷ

      1. Việt Phương Moderator

        Port 80 dùng cho http. Mình nghĩ bạn sửa thư mục mà root chỉ về để sang app là được.
        Đoạn root /home/hocvps.com/public_html trong file Nginx conf

        server {
        	listen   80;
        	server_name www.hocvps.com;
        	rewrite ^(.*) https://hocvps.com$1 permanent;
            	}
        server {
        	listen   80;
            	root /home/hocvps.com/public_html;
    2. Việt Phương Moderator

      Nếu bạn không cài SSL cho port quản lý thì có thể truy cập qua http://domain:port

      1. nxt_88 7 comment

        Minh deploy 1 app NodeJS sử dụng Meteor frame work thì root điền kiểu gì nhỷ

  19. Q.Huy 26 comment

    Có bác nào sử dụng SSL của namecheap không? Lúc active nó bắt nhập CSR code,theo hướng dẫn thì vô bài này https://www.namecheap.com/support/knowledgebase/article.aspx/9446/0/apache-opensslmodsslnginx
    run code theo hướng dẫn, nó bảo “Once all the requested information is filled in, you should have *.csr and *.key files in the folder where the command has been run.” em chả biết giờ 2 file đó nằm ở folder nào nữa @@ check date time cũng k ra

  20. nxt_88 7 comment

    Hi Luan Tran,

    Mình làm theo hướng dẫn và đến bước restart : service nginx restart thì gặp lỗi
    Job for nginx.service failed because the control process exited with error code. See “systemctl status nginx.service” and “journalctl -xe” for details.

    Bạn xem giúp mình với. Thanks

    1. Việt Phương Moderator

      Bạn chạy # systemctl status nginx.service# để biết lỗi cụ thể nhé. Thường là do sai cấu hình file Nginx.

      1. nxt_88 7 comment

        Bạn xem giúp mình với 🙂 do mình mới tập tành nên ko rõ lắm. Lỗi nó thông báo :

        Last login: Wed Jan 11 04:22:04 2017 from 118.70.199.1
        root@UshineVN:~# systemctl status nginx.service
        ● nginx.service – A high performance web server and a reverse proxy server
        Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
        Active: failed (Result: exit-code) since Wed 2017-01-11 04:28:17 UTC; 1h 20mi
        Process: 9300 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code
        Process: 9297 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process

        Jan 11 04:28:16 UshineVN nginx[9300]: nginx: [emerg] bind() to [::]:80 failed (9
        Jan 11 04:28:16 UshineVN nginx[9300]: nginx: [emerg] bind() to 0.0.0.0:80 failed
        Jan 11 04:28:16 UshineVN nginx[9300]: nginx: [emerg] bind() to [::]:80 failed (9
        Jan 11 04:28:17 UshineVN nginx[9300]: nginx: [emerg] bind() to 0.0.0.0:80 failed
        Jan 11 04:28:17 UshineVN nginx[9300]: nginx: [emerg] bind() to [::]:80 failed (9
        Jan 11 04:28:17 UshineVN nginx[9300]: nginx: [emerg] still could not bind()
        Jan 11 04:28:17 UshineVN systemd[1]: nginx.service: Control process exited, code
        Jan 11 04:28:17 UshineVN systemd[1]: Failed to start A high performance web serv
        Jan 11 04:28:17 UshineVN systemd[1]: nginx.service: Unit entered failed state.
        Jan 11 04:28:17 UshineVN systemd[1]: nginx.service: Failed with result ‘exit-cod
        lines 1-16/16 (END)

          1. nxt_88 7 comment

            Thank bạn
            Mình cài đc SSL rồi . Mình cái SSL nó vào port 80. Mình muốn deploy app vào port 80 thì phải làm thê nào nhỷ

  21. Luân Trần Admin

    Mình mới update lại cấu hình SSL tối ưu hơn, fix bug nữa, mời các bạn tham khảo.

  22. Tran Hung 50 comment

    làm theo hướng dẫn mà vẫn ko được, thử chỗ này listen 443 ssl http2;
    thêm default_server vào cuối thì mới đc, ko hiểu sao luôn

    1. Việt Phương Moderator

      Bạn cấu hình Nginx conf phần redirect sai nên bị lặp redirect lung tung rồi

  23. Tran Hung 50 comment

    cho hỏi module http2 có được tích hợp với nginx của script hocvps ko vậy? cảm ơn

    1. Việt Phương Moderator

      Module này được tự động tích hợp từ phiên bản Nginx 1.9.5. Bạn kiểm tra phiên bản Nginx hiện tại nhé # nginx -v

      1. Tran Hung 50 comment

        mình kiểm tra rồi, nhưng ko thấy nên mới hỏi
        nginx -V
        nginx version: nginx/1.10.2
        built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
        built with OpenSSL 1.0.1e-fips 11 Feb 2013
        TLS SNI support enabled
        configure arguments: –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 –http-log-path=/var/log/nginx/access.log –pid-path=/var/run/nginx.pid –lock-path=/var/run/nginx.lock –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 –user=nginx –group=nginx –with-file-aio –with-threads –with-ipv6 –with-http_addition_module –with-http_auth_request_module –with-http_dav_module –with-http_flv_module –with-http_gunzip_module –with-http_gzip_static_module –with-http_mp4_module –with-http_random_index_module –with-http_realip_module –with-http_secure_link_module –with-http_slice_module –with-http_ssl_module –with-http_stub_status_module –with-http_sub_module –with-http_v2_module –with-mail –with-mail_ssl_module –with-stream –with-stream_ssl_module –with-cc-opt=’-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong –param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic’

          1. Tran Hung 50 comment

            Cảm ơn, làm mình search http2 ko thấy. Cho mình hỏi Sau khi đăng ký ssl xong mình nhận được 2 email
            1 file nén gồm
            domain_com.ca-bundle
            domain_com.crt
            1 file nén gồm
            AddTrustExternalCARoot.crt
            COMODORSAAddTrustCA.crt
            COMODORSADomainValidationSecureServerCA.crt
            domain_com.crt

            Xin hỏi những thông tin này, mình xử lý ntn? mình làm theo cách ở trên bạn hướng dẫn nhưng không thành công. (mình cũng xài varnish)

  24. Huy 1 comment

    400 Bad Request

    The plain HTTP request was sent to HTTPS port

    lỗi này khi truy cập quản lý HocVPS Script Admin, nếu có https thì bình thường, nhưng nếu http thì nó lỗi như này ạ, server vultr

  25. Tran Hung 50 comment

    Sau khi đăng ký ssl xong mình nhận được 2 email
    1 file nén gồm
    domain_com.ca-bundle
    domain_com.crt
    1 file nén gồm
    AddTrustExternalCARoot.crt
    COMODORSAAddTrustCA.crt
    COMODORSADomainValidationSecureServerCA.crt
    domain_com.crt

    Xin hỏi những thông tin này, mình xử lý ntn? mình làm theo cách ở trên bạn hướng dẫn nhưng không thành công. (mình cũng xài varnish)

    1. Luân Trần Admin

      Bạn dùng 2 file domain_com.ca-bundle và domain_com.crt là ok rồi, trong bài hướng dẫn chi tiết đó bạn

    1. Việt Phương Moderator

      Được bạn à. Cài cho Varnish port 80 xử lý http request còn Nginx port 443 xử lý https request

  26. long 3 comment

    Mình dùng chứng chỉ của gogetssl mà file gửi về ko thấy có *.ca-bundle thì phải làm sao vậy bạn

    1. Việt Phương Moderator

      Nếu không có trong file attach thì bạn đọc mail sẽ thấy phần -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- là nội dung trong chứng chỉ đó

        1. namduy 110 comment

          Dear Customer!

          Thank you for choosing us to generate your CSR and SSL Private Key. Please keep this in a safe place!
          We provide most cheapest SSL Certificates and we can beat any competitor price for you

          Private Key:
          —–BEGIN PRIVATE KEY—–
          xxxxxxxxxxxxxxxxxxxxxxxxx
          —–END PRIVATE KEY—–

          CSR:
          —–BEGIN CERTIFICATE REQUEST—–
          xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
          —–END CERTIFICATE REQUEST—–

          1. Việt Phương Moderator

            Không phải mail này bạn ạ. Đây là phần generate key và csr. Xong bạn sử dụng key add lên server còn csr để generate ra chứng chỉ trên site nhà cung cấp

  27. Bao Nam 13 comment

    Xin góp các bác file của mình. Mình làm giống hocvps thì bị lỗi trên mobile. Thử remote vps ở nước ngoài vào web mình không được. ở dòng server đầu tiên mình sửa lại như sau. Chạy bình thường.

    server {
    server_name http://www.webgia.com;
    rewrite ^(.*) https://webgia.com$1 permanent;
    }
    server {
    listen 443 ssl http2;
    access_log off;
    error_log off;
    # error_log /home/webgia/logs/error.log;
    root /home/webgia/public_html;
    index index.php index.html index.htm;
    server_name webgia.com;

    # SSL
    ssl_certificate /etc/nginx/ssl/tfs/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/tfs/tfs.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/tfs/ssl-bundle.crt;

    # Improve HTTPS performance with session resumption
    ssl_session_cache shared:SSL:50m;
    ssl_session_timeout 1d;

    ssl_session_tickets off;

    # 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;
    }

    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 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 32k;
    fastcgi_buffers 8 16k;
    fastcgi_busy_buffers_size 32k;
    fastcgi_temp_file_write_size 32k;
    fastcgi_intercept_errors on;
    fastcgi_param SCRIPT_FILENAME /home/thefaceshop/public_html$fastcgi_script_name;
    }
    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;
    }
    }