Toidicode.com

Toidicode.com

BASIC TO ADVANCE

Cài đặt SSL trên local sử dụng mkcert

Dạo gần đây mình thấy khá nhiều các bạn inbox, hỏi trên group về cài đặt SSL trên local, nên hôm nay mình làm bài hướng dẫn mọi người cài đặt SSL trên local sử dụng mkcert.

1. SSL là gì?

Có thể các bạn cũng đã biết hoặc chưa biết :D.

SSL là viết tắt của từ Secure Sockets Layer. Là một tiêu chuẩn mã hóa được an ninh công nghệ toàn cầu tạo ra nhằm liên kết giữa máy chủ web và trình duyệt. Liên kết này đảm bảo tất 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. 

SSL đảm bảo rằng tất cả các dữ liệu được truyền giữa các máy chủ web và các trình duyệt được mang tính riêng tư, tách rời. Ngày nay, SSL là tiêu chuẩn bảo mật cho hàng triệu website trên toàn thế giới, nó bảo vệ dữ liệu truyền đi trên môi trường internet được an toàn.

2. Cài đặt SSL trên localhost.

Thông thường, khi develop ở dưới local mọi người thường sử dụng các domain ảo (virtual host). Chính vì thế ở local mọi người chỉ có thể sử dụng self-signed certificates.

Để setup self-signed certificates về cơ bản sẽ cần phải trải qua các bước như sau:

  1. Import local CA vào trình duyệt.
  2. Generate ra các certificate dựa vào local CA vừa import vào trình duyệt.
  3. Cấu hình certificate vừa generate ở trên vào trong webserver.

Tuy nhiên ở bài viết này mình sẽ sử dụng tool mkcert để hỗ trợ các bạn giảm tối đa các bước ở trên nhằm tránh các lỗi vặt xảy ra.

Cài đặt mkcert

Mkcert được viết bằng Go Lang và hỗ trợ các bạn cài đặt trên cả Linux, Windows và macOS.

Đối với Linux các bạn sử dụng các command sau để cài đặt.

# Ubuntu
sudo apt install libnss3-tools

sudo wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64 && \
sudo mv mkcert-v1.4.3-linux-amd64 mkcert && \
sudo chmod +x mkcert && \
sudo cp mkcert /usr/local/bin/

# Centos
sudo yum install nss-tools

sudo wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64 && \
sudo mv mkcert-v1.4.3-linux-amd64 mkcert && \
sudo chmod +x mkcert && \
sudo cp mkcert /usr/local/bin/

Đối với macOS các bạn sử dụng các command sau để cài đặt.

brew install mkcert
brew install nss # if you use Firefox

Còn đối với Windows các bạn có thể sử dụng Chocolatey để cài đặt mkcert.

choco install mkcert

Cài đặt SSL

Sau khi đã cài đặt xong mkcert các bạn sử dụng command:

mkcert -install

Command này sẽ làm thay chúng ta việc import CA của mkcert vào trong các browser chrome/chromium và firefox.

Tiếp theo các bạn sử dụng command dưới đây để generate ra certificate cho domain:

mkcert domain_name

Trong đó: domain_name là domain mà bạn muốn generate ra certificate.

Lưu ý: Các bạn nên cd đến thư mục chứa SSL rồi hãy thực thi câu lệnh, vì nó sẽ lưu certificate vào thư mục thực thi command.

VD: Mình sẽ generate ra certificate cho domain toidicode.local.

$ mkcert toidicode.local

Created a new certificate valid for the following names ?
 - "toidicode.local"

The certificate is at "./toidicode.local.pem" and the key at "./toidicode.local-key.pem" ✅

It will expire on 7 July 2023 ?

Hai file mkcert generate ra chính là certificate và private key của domain toidicode.local.

Cấu hình vào Nginx

Sau khi đã có 2 file certificate các bạn chỉ cần open port 443 và chỉ định đường dẫn 2 file vừa tạo ở trên vào trong ssl_certificatessl_certificate_key.

VD:

server {

    listen 443 ssl http2;

    ssl_certificate /etc/nginx/ssl/toidicode.local.pem;
    ssl_certificate_key /etc/nginx/ssl/toidicode.local-key.pem;

    server_name toidicode.local;

    root /var/www/toidicode.local;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$query_string;
    }
}

Cấu hình vào Apache

Tương tự như Nginx bạn chỉ định đường dẫn chứa certificate vào trong SSLCertificateFileSSLCertificateKeyFile

VD:

<VirtualHost _default_:443>
    ServerAdmin [email protected]
    DocumentRoot /var/www/toidicode
    ServerName toidicode.local
    ErrorLog /var/www/logs/error_log
    SSLEngine on
    SSLCertificateFile /etc/nginx/ssl/toidicode.local.pem
    SSLCertificateKeyFile /etc/nginx/ssl/toidicode.local-key.pem
</VirtualHost>

Sau khi đã cấu hình xong các bạn restart hoặc reload lại webserver là được.

Kết quả:

Cai dat SSL cho local voi mkcert

3. Lời kết.

Tool tạo SSL trên local thì cũng có khá nhiều, nhưng mình thấy mkcert đơn giản, dễ dùng và hỗ trợ trên nhiều OS nên mình sử dụng luôn.

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Vũ Thanh Tài

About author
The best way to learn is to share
Xem tất cả bài đăng

4 Comments

E chào a. Khúc

M phuc

3 năm trước

Khúc Cấu hình vào Nginx. Nhưng e chạy ở local thì set 2 cái đó ở đâu vậy a e xài windows

M phuc

3 năm trước

Chào M phuc,

Windows thì bạn dùng xamp hay laragon vậy?

Vũ Thanh Tài

3 năm trước

E code mern stack ý a

M phuc

3 năm trước

Bình luận

Captcha