Cài đặt SSL và giao thức HTTP/2 cho NGINX trên CentOS 7 [NEW]

Bài viết này của tác giả Công Hải của Vietstar.Net gửi đến độc giả thachpham.com.

Vào tháng 2, một loại giao thức web mới vừa được IESG phê duyệt với nhiều tính năng vượt trội hơn, giúp các trang web tối ưu hóa tốc độ, đó là giao thức HTTP / 2. Vậy HTTP / 2 là gì? CentOS 7.

HTTP 1.1 và HTTP 2

HTTP (Giao thức truyền siêu văn bản) là một giao thức truyền dẫn mạng tiêu chuẩn (truyền siêu văn bản – nói ngắn gọn là giao thức web). HTTP 1.1 ra đời vào năm 1997 và vẫn được sử dụng cho đến ngày nay mà không cần nâng cấp gì. Có lẽ nó đã quá cũ nên vào tháng 12 năm 2014, nhóm phát triển Giao thức truyền siêu văn bản đã đề xuất nó IESG hiểu HTTP / 2 như một tiêu chuẩn mới. Và đã IESG đồng ý Ngày 17 tháng 2 năm 2015.

HTTP 2 phát triển dựa trên SPDY (phát âm là nhanh) một giao thức mạng mở do Google phát triển.

Có thể bạn cần:

  • Cách cài đặt SSL và SPDY vào Apache.
  • Cách cài đặt SSL và SPDY cho NGINX.

Sự khác biệt là rất nhiều, nhưng tôi tóm tắt sự khác biệt lớn nhất giữa hai giao thức: HTTP2 hỗ trợ truy vấn phức hợp, nén nội dung, ưu tiên và quản lý luồng dữ liệu thông minh hơn. Điều đó làm giảm độ trễ và tăng tốc tải nội dung web.

HTTPS là gì?

HTTPS (Hypertext Transfer Protocol Secure) là sự kết hợp của giao thức HTTP và giao thức bảo mật SSL hoặc TLS cho phép trao đổi thông tin an toàn trên Internet.

Cài đặt thế nào

Có rất nhiều hướng dẫn cài đặt SSL trên mạng, nhưng thực sự Rất ít bài tập đúng. Ngay cả Tinhte.vn cũng chưa thực sự được cài đặt chính xác.

Bạn có thể kiểm tra SSL của trang web tại: https://www.ssllabs.com/ssltest/index.html

Kết quả thử nghiệm của Tinhte.vn.

Cài đặt SSL và giao thức HTTP/2 cho NGINX trên CentOS 7 [NEW]

Kết quả thử nghiệm của vietstar.net.

ssl-report-vietstar

Vì vậy, hôm nay, tôi sẽ hướng dẫn các bạn cài đặt và định cấu hình HTTPS với tiêu chuẩn HTTP2 đến A +.

Bước 1. Cài đặt NGINX 1.9.5 trở lên và bật HTTP 2

Vào ngày 22 tháng 9 năm 2015, NGINX đã phát hành phiên bản mainline 1.9.5 chính thức hỗ trợ HTTP 2, và từ đó chính thức nói lời chia tay với SDPY bấy lâu nay. Vì vậy, điều này có nghĩa là bạn chỉ có thể sử dụng HTTP 2 trên NGINX phiên bản 1.9.5 trở lên, nếu bạn đang sử dụng NGINX thì hãy nhập nginx -v để kiểm tra phiên bản NGINX hiện tại của bạn.

Nếu bạn đang sử dụng Centminmod, thì từ phiên bản Centmin Mod 1.2.3-eva2000.09 beta đã hỗ trợ NGINX 1.9.5.

Để cài đặt NGINX 1.9.5, bạn cần tải gói. Hãy tạo tệp /etc/yum.repos.d/nginx.repo và chèn đoạn văn sau hoặc, nếu có, hãy chỉnh sửa nội dung:

[code]
[nginx]

name = nginx repo
baseurl = http: //nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck = 0
đã bật = 1
[/code]

Sau đó cập nhật lại gói yum.

[code]cập nhật yum -y[/code]

Và cài đặt NGINX bằng lệnh sau:

[code]yum cài đặt nginx[/code]

Sau khi cài đặt, hãy kiểm tra xem nó có phải là phiên bản 1.9.5 và có mô-đun http 2 không (--with-http_v2_module) bằng lệnh sau:

[code]nginx – VẼ[/code]

Khi quá trình cài đặt hoàn tất, hãy thiết lập NGINX để sử dụng HTTP 2 bằng cách mở tệp cấu hình NGINX của bạn tại /etc/nginx/conf.d và thay đổi một phần listen 80 trở nên như thế này:

[code]

người phục vụ {
nghe 443 ssl http2;
server_name domain.com www.domain.com;
…..
}
[/code]

Và bạn tạo chứng chỉ SSL, sau đó tải nó lên máy chủ như bài học này (ngoại trừ bước 5, chúng tôi sẽ sửa đổi một chút bên dưới)

Bước 2: Định cấu hình SSL cho NGINX

Thiết lập xác thực bộ nhớ (Bộ đệm phiên)

Điều này khá quan trọng vì truy cập giao thức SSL lần đầu sẽ rất nhiều và nặng (Vì vậy khi truy cập trang https lần đầu thường lâu hơn các lần sau). Cài đặt này sẽ giúp NGINX ghi nhớ phiên của người dùng và không cần xác thực cho yêu cầu tiếp theo.

[code]

ssl_session_cache được chia sẻ: SSL: 20m;
ssl_session_timeout 180m;
[/code]

Ý nghĩa của dòng 1 là tạo vùng nhớ 20MB để xác thực SSL. Theo tài liệu NGINX, 1MB là 4000 phiên. Như vậy 20MB tương đương với 80.000 Phiên (bạn có thể điều chỉnh để phù hợp với nhu cầu máy chủ của mình).

Dòng thứ hai là lưu nó trong 180 phút (3 giờ) con số này phù hợp với lượng thời gian Người dùng truy cập trang web của bạn. Nếu trang web của bạn cần bảo mật hơn, bạn có thể giảm con số này xuống nhưng KHÔNG NÊN giảm xuống dưới 10 phút.

Tắt SSL

Bạn có thể nói rằng tôi điên rồ, thiết lập SSL bây giờ đang vô hiệu hóa nó.

Nói vậy thôi, nhưng thật ra thay thế SSL (Lớp ổ cắm an toàn) bởi TLS (Bảo mật tầng vận tải). Vì thực tế là SSL có nhiều điểm yếu hơn TLS. Tuy nhiên IE6 không hỗ trợ TLS (nhưng chắc IE6 cũ quá rồi, không tìm được nữa).

Thêm dòng sau vào sau 2 dòng trên:

[code]ssl_protocols TLSv1 TLSv1.1 TLSv1.2;[/code]

Tối ưu hóa Bộ mật mã (Bộ mã hóa)

Trung tâm xử lý, mã hóa và giải mã SSL / TLS chính là nơi này (tạm hiểu vì mình chưa phân tích sâu cơ chế hoạt động của nó).

Khai báo NGINX để bật bộ mã hóa:

[code]ssl_prefer_server_ciphers trên;[/code]

Đóng gói danh sách các cơ chế mã hóa được chấp nhận:

[code]ssl_ciphers ECDH + AESGCM: ECDH + AES256: ECDH + AES128: DH + 3DES:! ADH:! AECDH:! MD5[/code]

Tạo DHParam. thông số

Tạo tệp DH (Diffie-Hellman) với 2048 bit (đủ chết để hack):

[code]openssl dhparam 2048 -out /etc/nginx/cert/dhparam.pem[/code]

Sau đó thêm dòng sau vào cấu hình:

[code]ssl_dhparam /etc/nginx/cert/dhparam.pem;[/code]

@Ghi chú: Nếu khách hàng của bạn sử dụng JAVA 6 trở xuống, bạn chỉ nên sử dụng 1024 bit: D

Bật OCSP

OCSP (Online Certificate Status Protocol) được hiểu là kiểm tra chứng chỉ của bạn với cùng một nhà cung cấp SSL (theo bài viết tạo chứng chỉ SSL thì đây là COMODO). Tạo tệp Khai báo NGINX của bạn, đây là bài báo cuối cùng bằng cách sử dụng lệnh sau:

[code]mèo AddTrustExternalCARoot.crt PositiveSSLCA2.crt> trustchain.crt[/code]

Tập tin AddTrustExternalCARoot.crt là tệp gốc, tệp PositiveSSLCA2.crt là tệp chứng chỉ trung gian được bao gồm trong tệp zip khi bạn mua SSL hoặc tải xuống từ COMODO nơi đây.

Tiếp theo là cấu hình ghim NGINX

[code]

ssl_stapling trên;
ssl_stapling_verify trên;
ssl_trusted_certificate /etc/nginx/cert/trustchain.crt;
trình phân giải 8.8.8.8 8.8.4.4;
[/code]

Ở đây, tôi sử dụng nó thông qua Google DNS, bạn có thể sử dụng bất kỳ DNS nào khác mà bạn tin tưởng hoặc nhanh hơn.

Định cấu hình an ninh giao thông nghiêm ngặt

Sau khi Server xác thực, quay lại trình duyệt thời gian chấp nhận xác thực, trong thời gian này khi yêu cầu trình duyệt không cần gửi xác thực đến Server nữa (Chính vì vậy mà lúc đầu chỉ nặng thôi).

Thêm dòng sau vào tệp cấu hình:

[code]add_header Nghiêm ngặt-Giao thông-Bảo mật “max-age = 31536000” luôn;[/code]

Trong trường hợp xác thực này được sử dụng cho nhiều miền phụ, hãy chỉnh sửa như sau:

[code]add_header Nghiêm ngặt-Vận chuyển-Bảo mật “max-age = 31536000; includeSubDomains” luôn;[/code]

Đó Tất cả, đó là tất cả. Bạn lưu tệp và khởi động lại NGINX và có thể kiểm tra SSL của bạn là gì?

Sau khi cấu hình xong, bạn sẽ có tệp cấu hình NGINX của miền như sau:

[code]

người phục vụ {
nghe 443 ssl http2;
nghe [::]: 443 ssl http2;

server_name your_domain.com;

ssl_certificate /etc/nginx/cert/your_key.certchain.crt;
ssl_certificate_key /etc/nginx/cert/your_key.key;

ssl_session_cache được chia sẻ: SSL: 20m;
ssl_session_timeout 60m;

ssl_prefer_server_ciphers trên;
ssl_ciphers ECDH + AESGCM: ECDH + AES256: ECDH + AES128: DH + 3DES:! ADH:! AECDH:! MD5;

ssl_dhparam /etc/nginx/cert/dhparam.pem;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_stapling trên;
ssl_stapling_verify trên;
ssl_trusted_certificate /etc/nginx/cert/trustchain.crt;
trình phân giải 8.8.8.8 8.8.4.4;

add_header Nghiêm ngặt-Giao thông-Bảo mật “max-age = 31536000” luôn;
#add_header Nghiêm ngặt-Vận chuyển-Bảo mật “max-age = 31536000; includeSubDomains” luôn;

# Cấu hình của bạn ở bên dưới

}
[/code]

Sau đó, bạn có thể kiểm tra xem máy chủ có đang sử dụng HTTP 2 hay không bằng cách cài đặt plugin Chỉ báo HTTP / 2 và SPDY của Chrome.

http2 được kích hoạt

Vậy là xong, rất đơn giản phải không? Nhìn chung cách cài đặt SSL và bật HTTP / 2 khá đơn giản, nó giống như khi mình bật SPDY, nhưng chỉ khác thôi. spdy Pháo đài http2 trong phần listen chỉ của tệp cấu hình. Ngoài ra, trong bài viết này, bạn cũng đã biết thêm một số kỹ thuật quan trọng để cấu hình SSL an toàn hơn nhằm đạt tiêu chuẩn A + tại SSLLabs.

Chúc bạn thành công và đừng quên truy cập hoidap.thachpham.com nếu cần hỗ trợ.

Đánh giá nội dung này