Trong lúc code liên quan tới bản đồ, hỏi lấy vị trí hiện tại của người dùng (nhờ trình duyệt) qua HTML5 thì gặp vấn đề là thằng trình duyệt Chrome mất dạy nó bắt phải có HTTPS mới cho "hỏi vị trí người dùng". Chẳng nhẽ lại phải mua chứng chỉ ssl - https cho website để demo cho nó hoành tráng. Khổ cái là demo trên mỗi cái sub domain thôi, domain chính có việc riêng rồi và đếch cần HTTPS, thừa tiền đếch đâu mà mua HTTPS cho wildcard: *.huypv.net
Trong lúc code liên quan tới bản đồ, hỏi lấy vị trí hiện tại của người dùng (nhờ trình duyệt) qua HTML5 thì gặp vấn đề là thằng trình duyệt Chrome mất dạy nó bắt phải có HTTPS mới cho "hỏi vị trí người dùng". Chẳng nhẽ lại phải mua chứng chỉ ssl - https cho website để demo cho nó hoành tráng. Khổ cái là demo trên mỗi cái sub domain thôi, domain chính có việc riêng rồi và đếch cần HTTPS, thừa tiền đếch đâu mà mua HTTPS cho wildcard: *.huypv.net
Chợt nhớ ra trước anh Mạnh có share 1 bài gì về "tự setup HTTPS cho bất kỳ website nào của bạn" mà miễn phí hoàn toàn. Lục lọi ra em letsencrypt.org Ngon, triển khai thử luôn thôi xem sao!
Môi trường server (VPS) của mình áp dụng là: hệ điều hành debian 8; web server nginx nhé:
Bước 1: Khai báo thêm nguồn cho apt-get, kiểu như bảo server là muốn cài phần mềm thì vào thêm cả đây mà tìm này!. Chèn vào file /etc/apt/sources.list dòng sau
deb http://ftp.debian.org/debian jessie-backports main
Bước 2: Cài đặt certbot bằng lệnh
sudo apt-get install certbot -t jessie-backports
Bước 3: Tắt nginx đang chạy đi
sudo service nginx stop
Bước 4: Sinh files "chứng chỉ" cho tên miền
certbot certonly --standalone --email admin@kkk.huypv.net -d kkk.huypv.net
Nếu có nhiều tên miền thì cứ thêm -d vào, ví dụ cụ cmn thể nhé
certbot certonly --standalone --email admin@kkk.huypv.net -d kkk.huypv.net -d huypv.net -d www.huypv.net -d hahaha.huypv.net
Lúc này sẽ có mấy files được sinh ra trong thư mục: /etc/letsencrypt/live/kkk.huypv.net/
Bước 5: Cấu hình https cho nginx
listen 443 ssl;
server_name kkk.huypv.net;
ssl_certificate /etc/letsencrypt/live/kkk.huypv.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/kkk.huypv.net/privkey.pem;
[Bonus] tự động chuyển hết http sang https
listen 80;
# Make site accessible from http://localhost/
server_name kkk.huypv.net;
# force https-redirects
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
Bước 6: Khởi động lại nginx và truy cập website nhìn HTTPS đã hoạt động ngon nghẻ
Khà khà, vậy là chạy được HTTPS éo mất thêm xu nào.
Chưa xong nhé, còn bước cuối này quan trọng này. Tầm 90 ngày là cái chứng chỉ này hết hạn đấy nên phải có cronjob tự động renew lại cho nó
certbot renew --standalone --pre-hook "service nginx stop" --post-hook "service nginx start"
Nó sẽ renew nếu chứng chỉ hết hạn trong 30 ngày tới nên mình để cronjob chạy 1 tuần 1 lần (chắc cũng được), còn trên mạng nhiều chỗ bảo 2 ngày 1 lần thì phải. Điều đó tùy thuộc vào bạn ,web lỗi là biết mà thôi =))