Hướng dẫn cài đặt SSL HTTPS cho Nginx với Laradock

3rd Aug 2022
Hướng dẫn cài đặt SSL HTTPS cho Nginx với Laradock
Table of contents

Sẽ có một vài trường hợp ở localhost chúng ta cần đến https, tuy nhiên để có được https hơi “xịn” một chút với chứng chỉ SSL thì hôm nay mình sẽ chia sẻ về cách tạo chứng chỉ SSL cho localhost.

Dựng server https với nginx.

Đầu tiên chúng ta sẽ dựng một server sử dụng nginx. Các bạn có thể tham khảo bài hướng dẫn lần trước của mình ở đây. Truy cập vào đường dẫn https://localhost:8880 thì ta sẽ thấy ứng dụng Laravel chạy ngon nghẻ.

Khi mình cố gắng truy cập vào đường dẫn https://localhost:8843 thì sẽ gặp lỗi như sau:

Lỗi khi mình cố truy cập đến port https
Lỗi khi mình cố truy cập đến port https

Để có thể sử dụng https, chúng ta sẽ xử lý một chút ở đây. Trong file laradock > nginx > sites > default.conf

Sửa lại Dockerfile của Nginx
Sửa lại Dockerfile của Nginx

Chỉ cần bỏ đoạn comment này và build lại nginx là chúng ta có thể sử dụng https.

Đây là kết quả, chúng ta đã có thể sử dụng server với https, tuy nhiên sẽ có cảnh báo của trình duyệt là Not Secure.

Tạo chứng chỉ SSL.

Mình sẽ tạo một cái chứng chỉ SSL fake bằng cách sử dụng repository https://github.com/tbson/localca này. Các bạn clone về rồi làm theo file README là okie.

git clone https://github.com/tbson/localca

cd localca

chmod +x generate

./generate localhost

Chúng ta sẽ chỉ cần điền một vài thông tin cơ bản là có thể generate một cái chứng chỉ SSL “xịn xò” rồi.

Tạo chứng chỉ với repository localca
Tạo chứng chỉ với repository localca

Tiếp theo thì copy các key trong folder localhost để thay thế các key ssl của nginx

Các file key ssl trong thư mục localca/localhost
Các file key ssl trong thư mục localca/localhost
Các key ssl được thay thế trong thư mục laradock/nginx/ssl
Các key ssl được thay thế trong thư mục laradock/nginx/ssl

Cuối cùng, chúng ta cần import private key vào trình duyệt để make trust certificate.

  • Đối với Chrome, các bạn vào Setting > Security > Manage certificate  => chọn tab Authorities. Import file localca.pem trong folder localca phía trên, chọn Trust this certificate for identifying websites
Quản lý CA trong Google Chrome
Quản lý CA trong Google Chrome
Make trust CA trong Google Chrome
Make trust CA trong Google Chrome

Kết quả với trang https://localhost:8843 của chúng ta

Trang web với chứng chỉ SSL xịn Google Chrome
Trang web với chứng chỉ SSL xịn Google Chrome
  • Đối với Firefox, các bạn thực hiện như sau. Chọn Preferences. Search từ Certificate. Chọn View Certificates > Authorities > Import. Các bạn lại import file localca.pem vào và chọn Trust this CA to indentify websites.'
Quản lý CA trong Firefox
Quản lý CA trong Firefox
Make trust CA trong Firefox
Make trust CA trong Firefox

Test thứ trang https://localhost:8843 trên Firefox kết quả cũng thành công.

Trang web với SSL xịn Firefox
Trang web với SSL xịn Firefox

Như vậy mình đã hướng dẫn xong các bạn cách cài đặt SSL HTTPS cho Nginx với Laradock ở môi trường local một cách đơn giản và nhanh gọn. Trong bài viết thì mình 2 cổng http:8880 và https:8843, các bạn hoàn toàn có thể sử dụng cổng 80, 443 mặc định hoặc custom như mình. Hy vọng bài viết hữu ích với các bạn. Xin chào và hẹn gặp lại ở bải viết tiếp theo.

Link tham khảo

https://leehblue.com/add-self-signed-ssl-google-chrome-ubuntu-16-04/

https://superuser.com/questions/104146/add-permanent-ssl-certificate-exception-in-chrome-linux

Bạn thấy bài viết này như thế nào?
3 reactions
Attach

Add new comment

Image CAPTCHA
Enter the characters shown in the image.

Related Articles

Mỗi kết nối cơ sở dữ liệu được định nghĩa trong một mảng, với tên kết nối là khóa của mảng

Eager Loading là một kỹ thuật tối ưu hóa truy vấn cơ sở dữ liệu trong Laravel, giúp tăng tốc độ truy vấn và giảm số lượng truy vấn cần thiết để lấy dữ liệu liên quan đến một bản ghi.

Để sử dụng Eager Loading với điều kiện trong Laravel, bạn có thể sử dụng phương thức whereHas hoặc orWhereHas trong Eloquent Builder.

E hiểu đơn giản vầy nha. auth() hay Auth trong laravel là những function global hay class, nó cũng chỉ là 1 thôi

Xin chào các bạn, tuần này mình sẽ viết một bài về cách xử lý Real Time(thời gian thực) với Laravel và Pusher