Điểm:-1

Cách tạo máy chủ SSL HTTPS động trong nodejs mà không cần SNICallback

lá cờ vn

Tôi muốn tạo một máy chủ SSL HTTPS động trong node.js mà không cần sử dụng SNICallback, có thể sử dụng SSL mở?

Steffen Ullrich avatar
lá cờ se
*"có thể sử dụng SSL mở?"* - nodejs đã sử dụng thư viện openssl và SNICallback về cơ bản là cách openssl yêu cầu ứng dụng triển khai các chứng chỉ khác nhau dựa trên tên máy chủ đã cho trong TLS ClientHello (tức là SNI). Và việc chỉ nêu rõ *"Tôi muốn ... mà không sử dụng SNICallback"* có vẻ như là [vấn đề XY](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) đối với tôi - yêu cầu này đến từ đâu, tức làvấn đề thực sự nào khiến bạn không thể sử dụng SNICallback?
wesley allison avatar
lá cờ vn
@SteffenUllrich Tôi muốn nó được sử dụng như một máy chủ web sản xuất thông thường. Nhưng tôi cũng muốn có thể sử dụng các công cụ như curl dường như không hỗ trợ SNICallback. trừ khi tôi sai.
Steffen Ullrich avatar
lá cờ se
curl là một máy khách HTTP chứ không phải máy chủ. Tất cả các máy khách hiện đại (bao gồm cả curl) gửi tên máy chủ trong ClientHello và do đó hoạt động cùng với SNICallback trong nodejs. Ngoài ra, bạn cũng có thể chỉ cần thêm các bối cảnh khác nhau bằng cách sử dụng [server.addContext](https://stackoverflow.com/a/25953210/3081018) mà bên trong sử dụng lệnh gọi lại SNI (hoặc về mặt API openssl - [SSL_CTX_set_tlsext_servername_callback](https ://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_set_tlsext_servername_callback.html)). Và nếu tên máy chủ không được cung cấp trong ClientHello addContext sẽ sử dụng ngữ cảnh được thêm gần đây nhất.
dave_thompson_085 avatar
lá cờ jp
(@SteffenUllrich) ngoại trừ các công cụ _lỗi thời_ như bộ định tuyến hoặc thiết bị nhúng từ khoảng năm 2012 trở về trước mà không có bản cập nhật nào từ nhà sản xuất (ví dụ: đã phá sản) -- thì bạn có thể thiếu SNI.Trong trường hợp đó, bạn cần phải có chứng chỉ với SAN liệt kê tất cả các tên máy chủ (các máy khách hầu hết được hỗ trợ SAN từ những năm đầu tiên) hoặc _if_ tên máy chủ của bạn là tất cả các miền phụ của cùng một miền, nhận chứng chỉ có tên _wildcard_ phù hợp với tất cả chúng. Nếu không, hãy sử dụng cách cũ cũ, các máy chủ khác nhau trên các cổng hoặc địa chỉ IP khác nhau :-(
wesley allison avatar
lá cờ vn
@SteffenUllrich điều tôi thực sự nghĩ đến là tạo một máy chủ HTTPS từ đầu bằng cách sử dụng net.Server
Steffen Ullrich avatar
lá cờ se
@wesleyallison: *"tạo máy chủ HTTPS từ đầu bằng cách sử dụng net.Server"* - net.Server không hỗ trợ TLS. Đó là những gì mô-đun TLS dành cho - cũng hỗ trợ cho SNI. Dù sao đi nữa, tất cả những điều này dường như không có chủ đề ở đây vì serverfault.com không phải về lập trình - đó là những gì stackoverflow.com dành cho.
wesley allison avatar
lá cờ vn
@SteffenUllrich xin lỗi nếu lạc đề. Tôi nghĩ những gì tôi đang cố gắng làm là phức tạp: Tôi đang cố làm lại TLS, tôi đoán vậy

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.