1. Thông báo
    • Đã có box quảng cáo rao vặt, hãy cẩn thận để không bị banned tài khoản
    • Update 28/12/2016: Yêu cầu các bài rao vặt post sau ngày này cần phải share g+, post nào không share sẽ bị xóa không cần báo trước.
    • Vi phạm quy định 3 lần, sẽ bị xóa bài acc + toàn bộ bài viết
    Dismiss Notice

Hướng dẫn cài đặt chứng chỉ SSL miễn phí cho VPS và website wordpress

Discussion in 'Webmaster' started by ThaiDuong, Jun 20, 2016.

  1. ThaiDuong Administrator

    Ngày hôm nay mình sẽ hướng dẫn các bạn cách cài đặt chứng chỉ SSL miễn phí cho vps và đặc biệt là ssl cho website wordpress.

    Lets-Encrypt-Free-SSL-Certificate.png

    Thông thường bạn sẽ phải bỏ chi phí mỗi năm khoảng 10$ để được cấp chứng chỉ ssl này, nhưng hiện nay đã có nhà cung cấp ssl miễn phí cho bạn. Đó chính là Let’s Encrypt.


    SSL là gì

    SSL (Certificate Authority) là viết tắt của từ Secure Sockets Layer. Đây là một tiêu chuẩn an ninh công nghệ toàn cầu tạo ra một liên kết được mã hóa giữa máy chủ web và trình duyệt. Liên kết này đảm bảo tất cả các dữ liệu trao đổi giữa máy chủ web và trình duyệt luôn được bảo mật và an toàn.

    Mình sẽ hướng dẫn trên 2 hệ điều hành phổ biến đó là Debian/Ubuntu và CentOS sử dụng NGINX hoặc Apache. Do đó, bạn cần có một máy chủ chạy 2 hệ điều hành trên và đương nhiên cần một tên miền trỏ DNS về IP của server để có thể sử dụng SSL.

    Bước 1. Cài đặt Let’s Encrypt Client

    Bước đầu tiên để có thể lấy được SSL miễn phí từ Let’s Encrypt đó là cài đặt phần mềm letsencrypt trên máy chủ của bạn. Hiện tại, Let’s Encrypt chỉ có thể được cài đặt thông qua Repository từ Github nhưng trong tương lai có thể Let’s Encrypt sẽ được cài đặt thông qua Package Manager.

    Cập nhật các gói phần mềm của hệ thống:

    Debian/Ubuntu:

    Code:
    sudo apt-get update
    CentOS:
    Code:
    yum -y update
    Cài đặt git
    Việc cài đặt git để có thể sao chép mã nguồn Let’s Encrypt từ Github

    Debian/Ubuntu:
    Code:
    sudo apt-get -y install git
    CentOS:
    Code:
    yum -y install git
    Sao chép mã nguồn Let’s Encrypt vào máy chủ của bạn, chúng ta sẽ lưu trong thư mục opt (Ubuntu/Debian/CentOS)

    Code:
    git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
    Bước 2. Lấy chứng chỉ SSL miễn phí từ Let’s Encrypt

    Dành cho bạn đang dùng NGINX:

    Có nhiều cách để lấy một chứng chỉ tuy nhiên chúng ta sẽ lấy nó bằng plugin Standalone.

    Đảm bảo cổng 80 đang mở và không sử dụng

    Plugin Standalone cung cấp cho bạn một công cụ để lấy một chứng chỉ SSL từ Let’s Encrypt. Nó chạy như một webserver nhỏ thông qua port 80 để Let’s Encrypt CA có thể kết nối và xác mình server của bạn. Nó sẽ chạy như một webserver bình thường do đó nếu port 80 cần được mở và không sử dụng. Nếu bạn đã cài NGINX thì cần tắt nó đi tạm thời để giải phóng cổng 80. Chạy lệnh sau để tắt NGINX:

    Tắt NGINX (Debian/Ubuntu/CentOS):
    Code:
    service nginx stop
    Bây giờ bạn đã có thể sử dụng plugin Standalone được rồi.

    Nếu bạn đang dùng CentOS thì cần chạy các lệnh sau mới có thể dùng được plugin Standalone, Debian/Ubuntu thì bỏ qua nhé lên thẳng bước 3.

    Đầu tiên bạn cần kiểm tra phiên bản Python trên VPS CentOS: python –version

    Nếu kết quả là phiên bản lớn hơn hoặc bằng 2.7 thì bạn có thể bỏ qua còn nếu nhỏ hơn 2.7 thì chạy các lệnh sau để cập nhật Python lên phiên bản 2.7, chạy từng cái một nhé, hơi lâu khoảng 5”.

    Code:
    yum -y update
    yum groupinstall "Development tools"
    yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
    Code:
    cd /opt
    wget --no-check-certificate https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz
    tar xf Python-2.7.6.tar.xz
    cd Python-2.7.6
    ./configure --prefix=/usr/local
    make && sudo make altinstall
    Sau đó kiểm tra xem đã là phiên bản 2.7 chưa bằng lệnh /usr/local/bin/python2.7 –version . Nếu đã lên 2.7 thì đi tiếp bước 3.

    Bước 3. Chạy Let’s Encrypt

    Trước khi sử dụng Let’s Encrypt, bạn cần duyệt tới thư mục chứa Let’s Encrypt Client mà đã Clone lúc trước từ Github.
    Code:
    cd /opt/letsencrypt
    Bây giờ bạn có thể sử dụng plugin Standalone bằng cách chạy lệnh:
    Code:
    ./letsencrypt-auto certonly --standalone
    Có thể nó sẽ hỏi bạn nhập mật khẩu của user mà bạn đang đăng nhập vào SSH. Nếu hỏi thì nhập vào.

    Chờ một lúc cho Let’s Encrypt khởi chạy, bạn sẽ được hỏi một số thông tin, nhập chính xác nhé:

    Nhập địa chỉ email để phòng khi mất private key còn có chỗ mà lấy lại:

    cai-dat-ssl-mien-phi-tu-lets-encrypt.png
    Sau đó phải chấp nhận điều khoản của Let’s Encrypt. Chọn Agree

    cai-dat-ssl-mien-phi-tu-lets-encrypt-2.png

    Tiếp tục, bạn cần nhập tên miền mà bạn muốn dùng SSL. Lưu ý nếu bạn muốn dùng nhiều SSL ví dụ cho cả huongdan.info và www.huongdan.info thì phải nhập cả hai vào, cách nhau bởi dấu cách.
    cai-dat-ssl-mien-phi-tu-lets-encrypt-3.png

    Nếu thành công, bạn sẽ nhận được thông báo như thế này:

    Bạn nhớ chú ý dòng chữ màu đỏ ở trên, đó là thư mục chưa file SSL của bạn và ngày hết hạn chứng chỉ.

    File SSL gồm có:

    cert.pem: Chứng chỉ SSL cho tên miền của bạn
    chain.pem: Chứng chỉ của Let’s Encrypt
    fullchain.pem: cert.pem và chain.pem được gộp lại thành một
    privkey.pem: Private key của chứng chỉ

    Lưu ý là thư mục lưu các file SSL của bạn tại đường dẫn /etc/letencrypt/live/domain.com/

    Bước 4. Cài đặt SSL lên máy chủ NGINX

    Sau khi đã có file chứng chỉ rồi, việc của bạn bây giờ chỉ là cài đặt nó lên máy chủ của mình thôi. Mình sẽ hướng dẫn cài đặt trên NGINX.

    Mở tập tin cấu hình tên miền trên NGINX của bạn ra hoặc nếu bạn đang cài website mới thì tạo một cái. Mặc định nó được đặt trong thư mục /etc/nginx/conf.d. Hoặc nếu bạn vẫn chưa cài NGINX thì cài bằng lệnh sau:

    Debian/Ubuntu:
    Code:
    sudo apt-get install nginx 
    CentOS:
    Code:
    yum install epel-release
    yum install nginx
    Sau khi mở file cấu hình domain lên, hoặc tạo mới bằng lệnh sau:

    Code:
    nano /etc/nginx/conf.d/abcxyz
    Một file cấu hình SSL cho NGINX chuẩn sẽ có dạng như sau:

    Code:
    server {
       listen 80;
       server_name example.com;
       location / {
         return 301 https://example.com$request_uri;
       }
    }
    server {
       listen 443 ssl;
       server_name example.com;
       ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
       ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
       ssl_prefer_server_ciphers on;
       ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;
       root /var/www/example.com/code;
       index index.php index.html index.htm;
       location / {
       try_file $uri $uri/ /index.php;
    }
       location ~ \.php$ {
       try_files $uri =404;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
       fastcgi_pass unix:/var/run/php5-fpm.sock;
       }
    }
    Đây là file cấu hình SSL NGINX cơ bản, bạn cứ copy nguyên vào và sửa lại các thông tin của bạn như tên miền, đường dẫn tới file SSL, đường dẫn tới thư mục chứa code,..Mình sẽ không hướng dẫn chi tiết ở đây vì mục tiêu bài này chỉ là hướng dẫn lấy một chứng chỉ SSL miễn phí và mình cũng đã viết bài hướng dẫn cài đặt SSL & cấu hình bảo mật và tốc độ cho NGINX khi sử dụng SSL, bạn xem ở đây.

    Lưu lại và khởi động lại NGINX:
    Code:
    service nginx restart
    Truy cập vào website của bạn https://domain.com và bạn sẽ thấy cái khoá màu xanh trên trình duyệt, nhìn rất chuyên nghiệp :D.

    Dành cho bạn đang dùng Apache

    Apache đơn giản hơn, chỉ chạy một lệnh là xong (Nếu bạn dùng CentOS thì vẫn phải update Python lên 2.7 mà mình đã hướng dẫn ở phần chữ màu hồng ở trên nhé, nhớ thay huongdan.info bằng domain của bạn)

    Code:
    cd /opt/letsencrypt
    ./letsencrypt-auto --apache -d huongdan.info -d www.huongdan.info
    Sau đó nó sẽ tự cấu hình domain cho bạn luôn và nó sẽ hỏi một vài thông tin như email khôi phục, và quan trọng là nó sẽ hỏi bạn muốn dùng cả http và https hay chỉ dùng https thôi để nó cấu hình redirect, bạn chú ý kỹ nhé.

    Cấu hình tự động gia hạn Let’s Encrypt

    Chứng chỉ Let’s Encrypt chỉ sử dụng được trong vòng 90 ngày và bạn cần phải chạy lại dòng lệnh bên dưới để gia hạn.

    Code:
    /opt/letsencrypt/letsencrypt-auto renew
    Tuy nhiên, mình sẽ hướng dẫn các bạn cấu hình để tự động gia hạn chứng chỉ này với crontab, như vậy chúng ta sẽ sử dụng SSL miễn phí trọn đời mà không cần phải lo về việc gia hạn nữa.

    Mở file cấu hình crontab:
    Code:
    EDITOR=nano crontab -e
    Copy và paste đoạn code bên dưới vào cửa sổ terminal:
    Code:
    30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
    35 2 * * 1 /usr/bin/systemctl reload nginx
    Nhấn Ctrl+O, Enter để lưu và Ctrl+X để thoát. Bạn nhận được thông báo sau là thành công
    crontab trên sẽ tự động chạy lệnh gia hạn Let’s Encrypt vào lúc 2h30 sáng thứ 2 mỗi tuần và reload lại cấu hình Nginx vào lúc 2h35 mà không ảnh hưởng gì đến website đang hoạt động.

    Vậy là xong, bạn có thể yên tâm sử dụng Let’s Encrypt rồi đấy.

    Tiếp theo là việc cài đặt đối với website wordpress
    Nếu website wordpress của bạn trước đây đang sử dụng http và giờ muốn sử dụng https thì bận cần phải redirect từ http sang https. Công việc này khá đơn giản.

    Trước hết, bạn mở file index.php trong website wordpress của bạn lên (file index của website chứ ko phải của theme nhé) sau đó paste đoạn code bên dưới vào cuối file index

    Code:
    if($_SERVER["HTTPS"] != "on")
    {
    header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
    exit();
    }
    Tiếp theo bạn cài plugin WordPress HTTPS (SSL) vào website và active nó, công việc còn lại plugin sẽ tự lo :) (download plugin ở file đính kèm)

    Giờ mở website của bạn lên và tận hưởng nhé.
    - Nếu bạn thấy https ở website và hiện hình ổ khóa màu xanh, nghĩa là bạn đã thành công
    - Nếu bạn thấy https và hiện ổ khóa màu vàng, nghĩa là website của bạn vẫn còn 1 vài chỗ đang dùng http như trước. Bạn view source lên và xem phần nào đang là http thì sửa lại nhé.

    Vậy là xong :) Chúc các bạn thành công.
     

    Attached Files:

    Last edited: Jun 20, 2016
  2. phuoc_phuoc5

    phuoc_phuoc5 New Member

    ad có themes wordpress landing page nào đẹp không có thể share cho anh em dùng với không. Nếu được cám ơn ad nhiều
     
  3. ThaiDuong

    ThaiDuong Administrator Staff Member

    Cần thì contact mình nhé :) Mình không share, chỉ bán thôi :D/
     

Share This Page