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:
- Import local CA vào trình duyệt.
- Generate ra các certificate dựa vào local CA vừa import vào trình duyệt.
- 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_certificate
và ssl_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 SSLCertificateFile
và SSLCertificateKeyFile
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ả:
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!
M phuc
4 năm trước
M phuc
4 năm trước
Chào M phuc,
Windows thì bạn dùng xamp hay laragon vậy?
Vũ Thanh Tài
4 năm trước
M phuc
4 năm trước