Score:-1

วิธีสร้างเซิร์ฟเวอร์ SSL HTTPS แบบไดนามิกใน nodejs โดยไม่มี SNICallback

ธง vn

ฉันต้องการสร้างเซิร์ฟเวอร์ SSL HTTPS แบบไดนามิกใน node.js โดยไม่ใช้ SNICallback หรืออาจใช้ SSL แบบเปิด

Steffen Ullrich avatar
se flag
*"อาจจะใช้ open SSL?"* - nodejs ใช้ไลบรารี openssl อยู่แล้ว และ SNICallback นั้นเป็นวิธีการที่ openssl กำหนดให้แอปพลิเคชันใช้ใบรับรองต่างๆ ตามชื่อเซิร์ฟเวอร์ที่ระบุใน TLS ClientHello (เช่น SNI) และเพียงแค่ระบุว่า *"ฉันต้องการ ... โดยไม่ใช้ SNICallback"* ดูเหมือน [ปัญหา XY](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) สำหรับฉัน - ข้อกำหนดนี้มาจากไหน เช่นปัญหาที่แท้จริงใดที่บอกว่าคุณไม่สามารถใช้ SNICallback ได้
wesley allison avatar
vn flag
@SteffenUllrich ฉันต้องการให้ใช้เป็นเว็บเซิร์ฟเวอร์ที่ใช้งานจริงตามปกติ แต่ฉันก็ต้องการที่จะใช้เครื่องมือเช่น curl ซึ่งดูเหมือนจะไม่รองรับ SNICallback เว้นแต่ฉันผิด
Steffen Ullrich avatar
se flag
curl เป็นไคลเอนต์ HTTP ไม่ใช่เซิร์ฟเวอร์ ไคลเอนต์สมัยใหม่ทั้งหมด (รวมถึง curl) ส่งชื่อเซิร์ฟเวอร์ใน ClientHello และทำงานร่วมกับ SNICallback ใน nodejs นอกจากนี้คุณยังสามารถเพิ่มบริบทต่างๆ โดยใช้ [server.addContext](https://stackoverflow.com/a/25953210/3081018) ซึ่งภายในใช้การโทรกลับ SNI (หรือในแง่ของ API openssl - [SSL_CTX_set_tlsext_servername_callback](https ://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_set_tlsext_servername_callback.html)). และหากไม่ได้ระบุชื่อเซิร์ฟเวอร์ใน AddContext ของ ClientHello จะใช้บริบทที่เพิ่มล่าสุด
dave_thompson_085 avatar
jp flag
(@SteffenUllrich) ยกเว้นเครื่องมือ _obsolete_ เช่น เราเตอร์หรืออุปกรณ์ฝังตัวตั้งแต่ปี 2012 หรือก่อนหน้านั้นโดยไม่มีการอัปเดตจากผู้ผลิต (เช่น ล้มละลาย) -- ดังนั้นคุณอาจไม่มี SNIในกรณีนั้น คุณจะต้องได้รับใบรับรองที่มี SAN ที่แสดงชื่อเซิร์ฟเวอร์ทั้งหมด (ไคลเอนต์ส่วนใหญ่รองรับ SAN ตั้งแต่ช่วงต้นๆ) หรือ _if_ ชื่อเซิร์ฟเวอร์ของคุณเป็นโดเมนย่อยทั้งหมดของโดเมนเดียวกัน รับใบรับรองที่มีชื่อ _wildcard_ ที่ตรงกันทั้งหมด มิฉะนั้นใช้วิธีเก่าเซิร์ฟเวอร์ที่แตกต่างกันในที่อยู่ IP หรือพอร์ตที่แตกต่างกัน :-(
wesley allison avatar
vn flag
@SteffenUllrich สิ่งที่ฉันคิดไว้คือการสร้างเซิร์ฟเวอร์ HTTPS ตั้งแต่เริ่มต้นโดยใช้ net.Server
Steffen Ullrich avatar
se flag
@wesleyallison: *"การสร้างเซิร์ฟเวอร์ HTTPS ตั้งแต่เริ่มต้นโดยใช้ net.Server"* - net.Server ไม่รองรับ TLS นั่นคือสิ่งที่โมดูล TLS มีไว้ - ซึ่งรองรับ SNI ด้วย อย่างไรก็ตาม ทั้งหมดนี้ดูเหมือนจะไม่เกี่ยวกับหัวข้อที่นี่ เนื่องจาก serverfault.com ไม่เกี่ยวกับการเขียนโปรแกรม - นั่นคือสิ่งที่ stackoverflow.com มีไว้สำหรับ
wesley allison avatar
vn flag
@SteffenUllrich ขออภัยหากไม่ตรงประเด็น ฉันคิดว่าสิ่งที่ฉันพยายามทำนั้นซับซ้อน: ฉันกำลังพยายามสร้าง TLS ใหม่ ฉันเดาว่า

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา