Kích hoạt giao thức HTTP2 và cải thiện bảo mật kết nối Nginx SSL
Mục Lục
1. Làm cách nào để kiểm tra giao thức máy chủ web?
Bạn có thể nhanh chóng kiểm tra giao thức hiện đang hỗ trợ trong Trình duyệt Chrome bằng Tùy chọn dành cho nhà phát triển. Thực hiện theo các bước dưới đây:
- Mở trình duyệt Chrome và truy cập trang web của bạn
- Mở cửa sổ Tùy chọn nhà phát triển bằng cách nhấn nút [F12] trên bàn phím hoặc bạn cũng có thể nhấp chuột phải để thực hiện lệnh Kiểm tra
- Chuyển sang tab Mạng và chọn Tài liệu làm bộ lọc loại
- Tải lại trình duyệt và kiểm tra cột Giao thức* trong trường
Bạn sẽ có thể xem giao thức máy chủ web hiện tại trong Nhà phát triển.
2. Làm cách nào để bật hỗ trợ giao thức HTTP2?
HTTP/2 chỉ hỗ trợ HTTP được bảo mật, tức là kết nối HTTPS. Do đó, chắc chắn rằng bạn sẽ cần một chứng chỉ SSL được định cấu hình trên miền của mình. Mở tệp cấu hình Nginx của bạn và tra cứu các quy tắc bổ sung do Certbot thêm vào. Nó sẽ giống như dưới đây:
listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot
Trong trường hợp của tôi, tôi đã sử dụng tệp cấu hình mặc định và sẽ mở trong trình chỉnh sửa nano thông qua kết nối SSH.
Sudo nano /etc/nginx/sites-available/default
Bây giờ, hãy sửa đổi các quy tắc đã đề cập để thêm và hỗ trợ các kết nối http2 như thế này.
listen [::]:443 ssl http2 ipv6only=on; # managed by Certbot listen 443 ssl http2; # managed by Certbot
Khi các thay đổi được thực hiện, bạn có thể khởi động lại máy chủ Nginx và kiểm tra lại giao thức mới nhất của máy chủ web.
3. Thêm chứng chỉ đáng tin cậy
Trong cùng tệp cấu hình máy chủ này, bạn có thể kiểm tra hai quy tắc bổ sung do Certbot thêm vào. Chúng sẽ trông giống như dưới đây:
ssl_certificate /etc/letsencrypt/live/ example.com /fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com /privkey.pem ;
Chèn dòng sau vào bên dưới quy tắc ssl_certificate_key để thêm chứng chỉ đáng tin cậy.
ssl_trusted_certificate /etc/letsencrypt/live/example.com /chain.pem ;
Trong trường hợp của tôi, tôi sẽ thay thế example.com bằng demo.restorebin.com và quy tắc ssl_trusted_certificate cuối cùng của tôi sẽ là:
ssl_trusted_certificate /etc/letsencrypt/live/ demo.restorebin.com /chain.pem;
5. Cài đặt chứng chỉ SSL
Nếu bạn mở tệp trong trình chỉnh sửa nano , nó sẽ trông như thế này.
ssl_session_cache shared:le_nginx_SSL:1m; ssl_session_timeout 1440m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on;
Khi chúng tôi kiểm tra chứng chỉ SSL miền của mình, chúng tôi nhận thấy một số mật mã yếu bị SSLLabs gắn cờ. Do đó, tôi đã bỏ lỡ điểm A+.
Để thay thế tệp nội dung bằng tệp bên dưới để làm cho các mật mã đó mạnh hơn:
ssl_session_cache shared:le_nginx_SSL:1m; ssl_session_timeout 1d; ssl_session_tickets off; ssl_protocols TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_ecdh_curve secp384r1; ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload;"; add_header Content-Security-Policy "default-src 'none'; frame-ancestors 'none'; script-src 'self'; img-src 'self'; style-src 'self'; base-uri 'self'; form-action 'self';"; add_header Referrer-Policy "no-referrer, strict-origin-when-cross-origin"; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block";
Sau khi thực hiện các thay đổi, hãy đóng trình chỉnh sửa nano và khởi động lại máy chủ Nginx bằng lệnh bên dưới.
sudo service nginx restart