Cài đặt chứng chỉ SSL Comodo Possitive lên NGINX [NEW]



Một vài ngày trước, tôi nhận được một số email yêu cầu tôi viết một hướng dẫn chi tiết về cách cài đặt chứng chỉ SSL trên môi trường máy chủ và thiết lập nó cho trang web. Nhận thấy số lượng request cũng lớn nên mình sẽ viết bài hướng dẫn này thành 2 phần, một phần dành cho Apache và một phần dành cho NGINX, cả hai phần này đều hoạt động trên CentOS 6.5.

Về việc phân biệt các loại chứng chỉ SSL và mua SSL tôi đã đề cập ở phần đầu của bài viết Cài đặt SSL / HTTPS cho cPanelX, bạn có thể tham khảo trước ở đó.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt chứng chỉ SSL mà bạn đã mua từ một nhà cung cấp nhất định (Namecheap là tốt nhất, rẻ và hữu ích) chứ không phải cách tự tạo SSL tự ký. trên máy chủ rồi mới cài đặt vì ẩn chứa nhiều rủi ro và khả năng bị trình duyệt chặn là rất cao.

Trong bài viết, tôi đã lấy ví dụ về cài đặt SSL cho tên miền thachpham.com, vì vậy bất cứ khi nào bạn thấy mình viết thachpham.com, hãy thay đổi nó thành tên miền của bạn.

Tổng quan trước khi cài đặt

Trong bài viết này tôi sử dụng cấu hình sau.

  • PositiveSSL (nhập $ 9 / năm tại Namecheap)
  • Máy chủ web NGINX

Điều này có nghĩa là tôi cầu xin bạn chuẩn bị như vậy, nhưng tôi không thể giúp bạn nếu bạn sử dụng một hệ điều hành khác hoặc một máy chủ web khác.

Lưu ý trước khi cài đặt

Nếu miền bạn đang sử dụng là dịch vụ ẩn thông tin đăng ký (Whois Protected), hãy xóa nó và thiết lập email bạn đang sử dụng trong toàn bộ thông tin của miền.

Hoặc bạn nên chuẩn bị sẵn một email với tên [email protected] (example.com là miền của bạn) để nhận email từ nhà cung cấp SSL và xác thực.

Tham khảo:

  • Cách cài đặt PHP-FPM và NGINX trên CentOS 6.
  • Cài đặt PHP-FPM và NGINX trên Ubuntu.

Các bước cài đặt SSL trên máy chủ

Bước 1. Tạo một thư mục chứa chứng chỉ

Đây là thư mục sẽ chứa tất cả các tệp liên quan đến chứng chỉ mà trong bài viết này chúng ta sẽ tạo. Tôi khuyên bạn nên đặt nó vào một thư mục riêng để bạn có thể dễ dàng tìm thấy nó. Trong bài viết này, tôi sẽ sử dụng thư mục / etc / ssl /.

Tạo thư mục ssl / trong thư mục / etc.

[bash]mkdir -p / etc / ssl[/bash]

Và trong thư mục này, mình sẽ tạo thêm 2 thư mục có tên là riêngcsr.

[bash]mkdir -p / etc / ssl / private
mkdir -p / etc / ssl / csr[/bash]

Chức năng của từng thư mục:

  • / etc / ssl / private – lưu trữ tệp .key chứa các khóa riêng tư để tạo CSR.
  • / etc / ssl / csr – chứa các tệp .csr để gửi các yêu cầu xác nhận xác thực đến các nhà cung cấp SSL.

Đã hoàn thành.

Bước 2. Tạo khóa cá nhân cho máy chủ

Trước tiên, chúng tôi sẽ cần tạo một Khóa cá nhân của máy chủ Đối với máy chủ mà bạn cần cài đặt và kích hoạt SSL, mỗi máy chủ chỉ cần một Server Private Key.

Bây giờ tôi muốn tạo một máy chủ khóa riêng có tên sv.thachpham.com.key sau đó sẽ sử dụng lệnh sau để tạo.

[bash]openssl genrsa -out /etc/ssl/private/sv.thachpham.com.key 2048[/bash]

Đầu ra:

[[email protected]~]# openssl genrsa -out /etc/ssl/private/sv.thachpham.com.key 2048
Generating RSA private key, 2048 bit long modulus
................+++
......................................................................+++
e is 65537 (0x10001)
[[email protected] ~]#

Bước 3. Tạo khóa CSR

Bước này khá quan trọng nên bạn hãy làm từ từ, đọc càng xa càng tốt, đừng cầm đèn chạy trước đầu xe.

Bởi vì cuối cùng chúng ta cần một tệp có tên là .crt Để kích hoạt SSL cho trang web, chúng tôi sẽ cần tạo một CSR Chìa khóa (yêu cầu đăng kí chứng chỉ) để tạo một chuỗi mã hóa đặc biệt để gửi yêu cầu xác thực chứng chỉ SSL cho miền bạn cần thiết lập hoặc nói đúng hơn, sau khi bạn gửi Khóa CSR cho nhà cung cấp, họ sẽ cấp cho bạn một tệp CRT khớp với CSR của bạn.

Mỗi miền sẽ có một CSR riêng biệt, vì vậy bạn cần thực hiện lại bước này nếu sau này muốn xác thực cho các miền khác trên cùng một máy chủ. Và mỗi khi chuyển đổi máy chủ, bạn cũng cần tạo một Khóa CSR mới.

Ví dụ: trên máy chủ của tôi, có một tệp Khoá Cá nhân Máy chủ có tên /etc/ssl/private/sv.thachpham.com.key và tôi muốn tạo một tệp có tên CSR là /etc/ssl/csr/thachpham.com.csr sau đó viết lệnh sau:

[bash]openssl req -new -key /etc/ssl/private/sv.thachpham.com.key -out /etc/ssl/csr/thachpham.com.csr[/bash]

Và bây giờ, bạn sẽ nhập các thông tin sau (gõ không dấu). Bạn điền từ từ, nếu điền sai thì nhấn Ctrl + X (hoặc Ctrl + C, Ctrl + Z) rồi chạy lại lệnh trên để điền lại.

Country Name (2 letter code) [XX]: Mã quốc gia, đối với Việt Nam là VN.
 State or Province Name (full name) []: Tên tỉnh thành
 Locality Name (eg, city) [Default City]: Tên thành phố/quận huyện
 Organization Name (eg, company) [Default Company Ltd]: Tên công ty, doanh nghiệp
 Organizational Unit Name (eg, section) []: Lĩnh vực hoạt động
 Common Name (eg, your name or your server's hostname) []: Domain của website cần chứng thực (vd: thachpham.com, không chứa www)
 Email Address []: Địa chỉ Email

Và 2 tính năng bổ sung này bạn không cần nhập mà chỉ cần Enter.

Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:
 An optional company name []:

Và đây là biểu mẫu của tôi:

[[email protected] ~]# openssl req -new -key /etc/ssl/private/sv.thachpham.com.key -out /etc/ssl/csr/thachpham.com.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:VN
State or Province Name (full name) []:Ba Ria Vung Tau
Locality Name (eg, city) [Default City]:Vung Tau
Organization Name (eg, company) [Default Company Ltd]:Thach Pham Blog
Organizational Unit Name (eg, section) []:Blogging
Common Name (eg, your name or your server's hostname) []:thachpham.com
Email Address []:[email protected]

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Nếu xong, nó không nói lên điều gì thì bạn đã làm thành công. Bây giờ việc tiếp theo là in nội dung tập tin /etc/ssl/csr/thachpham.com.csr vừa được tạo bằng lệnh sau:

[bash]cat /etc/ssl/csr/thachpham.com.csr[/bash]

Nội dung trả về là một cái gì đó như thế này:

-----BEGIN CERTIFICATE REQUEST-----
MIIC5DCCAcwCAQAwgZ4xCzAJBgNVBAYTAlZOMRMwEQYDVQQIDApCaW5oIER1b25n
MRMwEQYDVQQHDApCaW5oIER1b25nMRYwFAYDVQQKDA1HaXVwYmFubGFtZGVwMRAw
DgYDVQQLDAdMYW0gZGVwMRowGAYDVQQDDBFnaXVwYmFubGFtZGVwLmNvbTEfMB0G
CSqGSIb3DQEJARYQZXppdDkyQGdtYWlsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBANJ4f8Z+8VIAg3Q033BO83V78QBFiq2MeLamOGdG+cvrJFLL
ZhHcbvxOjYxSt/IsRgfUWbDSBZUWn77RtZN/WiJylMK1z8aftVr9/ysqLo1rRo/n
NLu7AOWD6mMDW/fnmcv8eDxH2NaHAhKMd2f6mnEZ9/x6V
ULtcYpmZ59JFqfc8UXKO+2eabc87EJTzsyfw06v9GBALVZLKjOPK89RWvI2bSTPb
UBwPhrKAlTHv8A+OXhfImOh1CRKxiZOOU
HeJzJG9qWpLX41l16C0Y+p7pQvU9T/ZAHUXmhhH2CyNgJfd8/kx7PywNGXauAHGw
GM4VEpCqjeHcLOpu1Ea5rW5WvSTYAHsy
-----END CERTIFICATE REQUEST-----

Ok, bây giờ chúng ta hãy rời khỏi hiện trường.

Bước 4. Gửi xác thực SSL

Bước này có thể khác nếu bạn mua SSL từ nhà cung cấp khác, toàn bộ bước dưới đây dành cho những ai sử dụng SSL tại Namecheap.

Bây giờ bạn vào trang web của nhà cung cấp SSL mà bạn đã đặt hàng, giống như mình mua ở Namecheap vậy mình vào phần quản lý SSL và kích hoạt gói SSL mới mua, sau đó copy chuỗi CSR Key kia vào để kích hoạt như trong hình. phía dưới.

Cài đặt chứng chỉ SSL Comodo Possitive lên NGINX [NEW]

Sau khi bấm Next, bạn đợi một chút nó sẽ tìm kiếm thông tin từ CSR Key của bạn và hiển thị như hình bên dưới, chọn đúng email bạn đang sử dụng rồi bấm Next. Lưu ý rằng email này phải nhận được email từ người khác.

cai-dat-ssl-apache-03

Sau đó bấm vào dấu xác nhận và bấm Tiếp tục….

cai-dat-ssl-apache-04

Và nhập lại thông tin cá nhân và nhấn Nộp đơn đặt hàng.

cai-dat-ssl-centos-05

Sau đó đi tới hộp thư đến mà bạn đã chọn là Email của người phê duyệt Bạn sẽ thấy một email đến. Mở nó ra, bạn sẽ nhận được một liên kết kích hoạt và một mã kích hoạt, vui lòng nhấp vào và nhập mã kích hoạt.

Cai-dat-ssl-centos-06

Nhập mã và nhấn Tiếp theo.

cai-dat-ssl-centos-07

Và đợi trong giây lát, mở lại email đăng ký SSL bạn sẽ thấy hai email như thế này.

Cai-dat-ssl-centos-08

Bạn mở lần lượt hai email, một trong hai email sẽ có tệp đính kèm .zip như thế này.

Cai-dat-ssl-centos-09

Tải xuống và giải nén bạn sẽ nhận được 4 tệp .crt như thế này.

Cai-dat-ssl-centos-10

Hãy tải tất cả lên / etc / ssl /.

Sau đó gộp lại thành 1 tệp (tệp domain-cua-ban.crt được đặt trước). Ví dụ dưới đây là tôi hợp nhất 3 tệp (loại bỏ CARoot) thành 1 tệp .crt như thể hiện trong hình trên:

cd /etc/ssl
cat thachpham_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt > thachpham-bundle.crt

Bây giờ bạn đã có tệp thachpham-budle.crt, chúng tôi sẽ sử dụng tệp đó cho NGINX.

Trong trường hợp bạn tải xuống nhưng chỉ có 2 tệp sau đó thực hiện tương tự như trên, đó là gộp 2 tệp thành tệp .crt rồi sử dụng.

Bước 5. Bật SSL cho NGINX

Sau đó, mở tệp cấu hình của miền cần sử dụng SSL (ví dụ: /etc/nginx/conf.d/thachpham.com.conf) và bắt đầu mổ xẻ. Trước khi mổ xẻ, hãy sao lưu tập tin này, tôi cần bạn hiểu những gì chúng tôi sẽ làm.

Những gì chúng ta cần làm là thay đổi cài đặt hiện tại (cho cổng 80) thành cài đặt cho cổng 443, sau đó trỏ Khóa SSL đến các tệp .key và .crt mà bạn có trong thư mục / etc / ssl. . Sau đó, chúng tôi sẽ thiết lập cổng 80 của miền để tự động chuyển hướng 301 sang HTTPS.

Bây giờ bạn mở tệp cấu hình miền và tìm:


server {
server_name thachpham.com www.thachpham.com;

Lưu ý rằng trong đoạn trên nếu không có phần Listen 80 thì mặc định nó sẽ sử dụng cổng 80, còn nếu tệp cấu hình của bạn có phần Nghe 80 ở đây thì nó vẫn được đổi thành:


server {
listen 443 spdy ssl;
server_name thachpham.com www.thachpham.com;

Chèn thêm bên dưới nó


# SSL
ssl on;
ssl_certificate /etc/ssl/thachpham-bundle.crt;
ssl_certificate_key /etc/ssl/private/sv.thachpham.com.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
ssl_stapling on;

Hãy nhớ sửa lại đường dẫn để lưu tệp .crt và tệp .key một cách chính xác.

Sau đó thêm dòng này vào đầu tệp:


server {
listen 80;
server_name thachpham.com;
return 301 https://thachpham.com$request_uri;
}

Đầu ra sau khi chèn sẽ gần giống như sau:

server {
       listen         80;
       server_name    hoidap.thachpham.com www.hoidap.thachpham.com;
       return         301 https://$server_name$request_uri;
}

server {
    listen 443 spdy ssl;
    server_name  thachpham.com www.thachpham.com;
    keepalive_timeout  30;


    ssl on;
    ssl_certificate /etc/ssl/thachpham-bundle.crt;
    ssl_certificate_key /etc/ssl/private/sv.thachpham.com.key;
    ssl_session_timeout  5m;
    ssl_session_cache    shared:SSL:10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
    ssl_prefer_server_ciphers   on;
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
    ssl_stapling on;
    root /home/nginx/domains/hoidap.thachpham.com/public;

    location / {
        index index.php index.html index.htm;
        try_files $uri $uri/ /index.php?$uri&$args;
     
    }

  include /usr/local/nginx/conf/staticfiles.conf;
  include /usr/local/nginx/conf/php.conf;
  include /usr/local/nginx/conf/drop.conf;

  }

Lưu và khởi động lại NGINX.

[bash]khởi động lại dịch vụ nginx[/bash]

Bước 6. Định cấu hình SSL cho WordPress

Tiếp tục cài đặt plugin HTTPS của WordPress và đánh dấu nó dưới dạng hình ảnh.

kich-hoat-ssl-cloudflare-03

Sau đó, chèn phần sau vào tệp wp-config.php

define(‘WP_HOME’,’https://thachpham.com’);
define(‘WP_SITEURL’,’https://thachpham.com’);

Tận hưởng thành quả.

Văn bản HTTPS bị lỗi màu vàng

Đây chỉ là Cảnh báo chứ không phải lỗi, nguyên nhân là do trong website của bạn vẫn còn một liên kết nào đó (file ảnh, CSS, Javascript) đang được tải bằng giao thức HTTP thông thường, kể cả các liên kết trỏ ra ngoài. Cài đặt plugin HTTPS của WordPress gần như đã khắc phục được lỗi SSL với Gravatar và ShareThis.

Nếu trạng thái vẫn tiếp diễn, hãy nhấp chuột phải vào trang và chọn Kiểm tra nguyên tốsau đó mở qua tab Bảng điều khiển bạn sẽ thấy nó thông báo chính xác tệp nào đang được tải bằng giao thức HTTP để sửa.

Ví dụ:

https://thachpham.com/xxxx' was loaded over HTTPS, but displayed insecure content from 'https://thachpham.com/xxxx.jpeg': this content should also be loaded over HTTPS.

Nếu bạn gặp khó khăn khi theo dõi bài viết này, hãy comment bên dưới kèm theo nội dung về tệp cấu hình tên miền của bạn trên NGINX. Cách làm Webserver Apache mình sẽ hướng dẫn sau.

Đánh giá nội dung này