การส่งข้อมูลโปรโตคอล SSL เพื่อแบ็กเอนด์ผ่านส่วนหัว HTTP


13

หลังจากช่องโหว่ของพุดเดิ้ลถูกเปิดเผยเมื่อเร็ว ๆ นี้ทีมของเราตัดสินใจที่จะดำเนินการต่อจาก SSLv3 แต่ก่อนที่จะกำจัดสมบูรณ์พวกเขาต้องการที่จะเตือนผู้ใช้งานในชีวิตประจำวันที่ใช้เบราว์เซอร์ของพวกเขาเลิก SSLv3 ดังนั้นเราจึงเกิดแนวคิดขึ้นมา

  • ตรวจจับโปรโตคอล (SSLv3, TLS1 และอื่น ๆ ... ) จาก front-offloading การถ่าย SSL (เราใช้ nginx)
  • ส่งข้อมูลนั้น (โปรโตคอล SSL) ผ่านส่วนหัว HTTP ไปยัง Apache-backend

แล้วรหัสแบ็กเอนด์ของเราจะดำเนินการที่ส่วนหัวและให้คำเตือนถ้าลูกค้าใช้ SSLv3

ผมทราบว่า Nginx proxy_set_headerมีคุณสมบัติ ดังนั้นอันนี้จะง่ายเหมือน

proxy_set_header X-HTTPS-Protocol $something;

ตอนนี้ปัญหาคือ: เห็นได้ชัดว่า nginx รู้จักโปรโตคอลที่ลูกค้าใช้ แต่ฉันจะส่งข้อมูลนั้นเพื่อแบ็กเอนด์ผ่านส่วนหัว HTTP ได้อย่างไร

ขอบคุณ


ตามที่ชี้โดยผู้ใช้ Apache ที่คล้ายกันในเธรดถ้าพวกเขาใช้ SSLv3แนวคิดนี้อาจกลายเป็นความคิดที่แย่มาก

เหตุผลคือการจับมือกันของ TLS เกิดขึ้นก่อนที่ทราฟฟิก HTTP จะถูกส่งผ่านอุโมงค์ TLS เมื่อแบ็กเอนด์ของเราตรวจพบโปรโตคอล SSL ไคลเอนต์อาจส่งข้อมูลส่วนตัวในคำขอแรกของเขา สำหรับโซลูชันระยะยาวและถาวรเราควรพิจารณาปิดการใช้งาน SSLv3

คำตอบ:


14

Nginx ใช้ตัวแปรจำนวนมากซึ่งสามารถใช้ในการกำหนดค่า หน้านี้ระบุรายการตัวแปรทั้งหมด ตัวแปรที่มีโปรโตคอล HTTPS ssl_protocolในคำขอเป็น อ้างอิง:

$ssl_protocol

ส่งคืนโปรโตคอลของการเชื่อมต่อ SSL ที่สร้างไว้แล้ว

ดังนั้นproxy_set_headerการกำหนดค่าของคุณจะเป็น

proxy_set_header X-HTTPS-Protocol $ssl_protocol;

การอ้างอิงอื่น: ที่นี่


เซมิโคลอนที่ขาดหายไปในตอนท้ายของ $ ssl_protocol (ฉันไม่สามารถเปลี่ยนแปลงได้เนื่องจาก serverf * l ต้องเปลี่ยน 6 ตัวอักษร)
danger89

@ danger89 ทำอย่างนั้น
sanmai
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.