Hướng dẫn chi tiết các bước cài đặt SSL cho Nginx

Hướng dẫn chi tiết các bước cài đặt SSL có phí cho Nginx giúp mạng lại một môi trường an toàn và bảo mật đến khách hàng.

Bước 1: Giải nén tập tin đính kèm trong email mà nhà cung cấp SSL gửi cho ban sau khi chứng thư số được cấp (hoặc lưu nội dung Certificate và CA trong email vào các file có tên tương ứng như: matbao.support.crt, matbao.support.ca-bundle) , sẽ nhận được tập tin matbao.support.crt và matbao.support.ca-bundle

Mẹo: Truy cập trang quản lý SSL, chọn Tải SSL -> phiên bản Nginx để nhận tập tin phù hợp với Nginx

Bước 2: Tải tập tin này lên máy chủ: Lưu vào trong thư mục lưu private key của bạn (ví du: /usr/local/ssl/certificate)

Bước 3: Đăng nhập vào SSH bằng tài khoản root và truy cập đến thư mục vừa tải certificate lên.

Bước 4: Lúc này trong thư mục /usr/local/ssl/certificate sẽ có 3 tập tin: private.key, matbao.support.crt, matbao.support.ca-bundle

Chuyển đổi thành tập tin dùng cho Nginx, dùng lệnh: cat matbao.support.crt matbao.support.ca-bundle > matbao.support-ca.crt (bỏ qua bước này nếu bạn tải phiên bản dành cho Nginx từ website hoặc quý khách dùng SSL của nhà cung cấp khác COMODO)

Bước 5: Mở file cấu hình của nginx (thường là /etc/nginx/conf/default.conf hoặc /etc/nginx/conf/ssl.conf hoặc /etc/nginx/sites-enabled/domain.conf) và tìm đoạn cấu hình sau:

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;

# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_certificate /usr/local/ssl/certificate/matbao.support-ca.crt;
ssl_certificate_key /usr/local/ssl/certificate/private.key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

# Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
ssl_dhparam /usr/local/ssl/certificate/dhparam.pem;

# intermediate configuration. tweak to your needs.
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
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’;
ssl_prefer_server_ciphers on;

# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling —
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;

## verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver <IP DNS resolver>;

….
}

Một số giá trị cần thay đổi để phù hợp với trường hợp của bạn:

  • ssl_certificate: đường dẫn đến tệp tin chứng chỉ.
  • ssl_certificate_key: đường dẫn đến Private key, ở đây là tệp private.key mà bạn đã tạo chung với CSR khi đăng ký SSL.
  • ssl_dhparam: chỉ định một tệp tin với các thông số DH cho mật mã DHE. Sử dụng lệnh sau:
openssl dhparam -out /usr/local/ssl/certificate/dhparam.pem 2048

/path/to/dhparam.pem là đường dẫn mà bạn muốn lưu tệp tin.

  • ssl_trusted_certificate: đường dẫn đến tệp tin CA Bundle. Đối với Comodo, bạn cần hợp nhất bởi Root CA và Intermediate Certificates
wget https://gist.githubusercontent.com/sergejmueller/4b53e4c810f61aca391a/raw/f175a094122b91fdda8523a90ca6dc057d70b9f1/comodo.pem
  • resolver: DNS. Ví dụ: resolver 8.8.4.4 8.8.8.8;
Bước 6: Save lại file cấu hình và khởi động lại nginx Kiểm tra trước khi khởi động lại Nginx: nginx -t

Nếu thành công, khởi động lại Nginx: service nginx restart

Bước 7: Mở port 443 trên Firewall (Nếu bạn dùng software firewall như iptables chẳng hạn thì có thể tìm thấy file config tại: /etc/sysconfig/iptables)

Chúc các bạn cài đặt SSL cho Nginx thành công!!!

Nguồn: wiki.matbao.net