Cài đặt self-signed SSL Cho Localhost Với Mkcert

Trong lúc xem package sirv-cli thì thấy giới thiệu phần setup self-signed ssl (sử dụng mkcert) để chạy http/2, dùng thử thì thấy rất đơn giản nên giới thiệu với mọi người.

mkcert là một CLI tool viết bằng Golang dùng để tạo self-signed ssl certificates. Trên mạng cũng có nhiều cách setup SSL cho localhost nhưng theo mình thấy thì dùng mkcert này là đơn giản nhất.

Cài đặt mkcert

mkcert hỗ trợ cả 3 nền tảng phổ biến là Windows, Linux, macOS. Mình sẽ giới thiệu cách cài đặt trên Ubuntu. Cách cài đặt khác có thể tham khảo tại đây.

#Cài đặt certutil nằm trong thư viện libnss3-tools
sudo apt install libnss3-tools

Để cài mkcert cho Ubuntu thì sẽ có 3 cách:

  1. Cài đặt thông qua Linuxbrew
brew install mkcert

2. Build từ source code (yêu cầu Go phiên bản 1.13 trở lên)

git clone https://github.com/FiloSottile/mkcert && cd mkcert
go build -ldflags "-X main.Version=$(git describe --tags)"

3. (Dễ nhất) Download binary đã build sẵn tại đây. Mình đang dùng Ubuntu thì mình sẽ download file này về mkcert-v1.4.1-linux-amd64

Sử dụng mkcert tạo cert

Đầu tiên chạy lệnh

mkcert -install

mkcert sẽ tạo ra một Certificate Authority (CA) và tự động import CA này vào hệ điều hành/Firefox/Chrome. Tìm hiều thêm về Certificate Authority.

Sau khi đã import CA thì giờ ta sẽ tạo chứng chỉ SSL. Ở đây mình sẽ tạo cho tên miền nddcoder.test.

mkcert nddcoder.test

mkcert sẽ tạo ra 2 file: 1 file là chứng chỉ ssl và 1 file là private key.

Using the local CA at "/home/dangdung/.local/share/mkcert"

 Created a new certificate valid for the following names
- "nddcoder.test"

The certificate is at "./nddcoder.test.pem" and the key at "./nddcoder.test-key.pem"

Cài đặt chứng chỉ SSL với Nginx

server {
    listen 443 ssl http2;
    ssl_certificate /home/dangdung/certs/nddcoder.test.pem;
    ssl_certificate_key /home/dangdung/certs/nddcoder.test.key;

    server_name nddcoder.test;

    root /var/www/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

Restart Nginx config và truy cập vào domain https://nddcoder.test

SSL với domain nddcoder.test

Với các web server khác Nginx thì các bạn có thể tự tìm hiểu thêm.

Chúc các bạn thành công.