Score:0

ส่งใบรับรอง HTTPS จากเซิร์ฟเวอร์ดาวน์สตรีมผ่านพร็อกซี NGINX ไปยังไคลเอนต์

ธง de

ฉันมีคอมพิวเตอร์ขอบอูบุนตูจำนวนมากที่โฮสต์เซิร์ฟเวอร์เว็บ HMI อย่างง่าย หลายคนอยู่เบื้องหลัง IP แบบไดนามิกซึ่งไม่สามารถส่งต่อพอร์ตได้

ดังนั้นในการเข้าถึงพวกเขาแต่ละคนใช้ autossh เพื่อสร้างอุโมงค์ย้อนกลับในพร็อกซีเซิร์ฟเวอร์คลาวด์ส่วนกลาง ฉันสามารถเข้าถึงแต่ละคนด้วย https://proxy.mydomain.com:6001, 6002 ฯลฯ ใช้งานได้

ตอนนี้ฉันต้องการใช้ NGINX เพื่อที่เราจะได้ไม่ต้องจำหมายเลขพอร์ต ดังนั้น สิ่งอำนวยความสะดวกแต่ละแห่งจะมีโดเมนย่อยของตัวเอง: https://site1.mydomain.com, site2 ฯลฯ โดเมนย่อยทั้งหมดจะชี้ไปที่พร็อกซีเซิร์ฟเวอร์ของฉัน จากนั้น NGINX ควรดูที่โดเมนย่อยและการรับส่งข้อมูล https พร็อกซีไปยังพอร์ตช่องสัญญาณย้อนกลับที่เหมาะสม

การกำหนดค่า NGINX แสดงอยู่ด้านล่าง

ปัญหาของฉันในตอนนี้คือ NGINX ต้องการให้ฉันกำหนดใบรับรอง SSL อย่างไรก็ตาม ฉันต้องการใช้ใบรับรองที่ติดตั้งไว้แล้วในคอมพิวเตอร์ Edge แต่ละเครื่อง

แล้วฉันจะส่งต่อใบรับรองเหล่านั้นผ่านพร็อกซี NGINX ไปยังไคลเอ็นต์ได้อย่างไร

หากไม่สามารถทำได้ วิธีใดที่ดีที่สุดในการกำหนดใบรับรองหนึ่งใบหรือแยกกันบนพร็อกซีเซิร์ฟเวอร์ที่สามารถใช้กับโดเมนย่อยทั้งหมด

เซิร์ฟเวอร์ {
    ฟัง 443 ssl;
    server_name site1.mydomain.com;
    ที่ตั้ง / {
        proxy_set_header โฮสต์ $host;
        proxy_pass https://127.0.0.1:6001;
        เปิด proxy_ssl_server_name;
        ปิด proxy_redirect;
    }
}

เซิร์ฟเวอร์ {
    ฟัง 443 ssl;
    server_name site2.mydomain.com;
    ที่ตั้ง / {
        proxy_set_header โฮสต์ $host;
        proxy_pass https://127.0.0.1:6002;
        เปิด proxy_ssl_server_name;
        ปิด proxy_redirect;
    }
}

อัปเดต สำหรับคนที่อยากรู้อยากเห็น ฉันสามารถใช้โปรเจ็กต์ "SNIProxy" แทน NGINX และแก้ไขปัญหานี้ได้ ใบรับรอง HTTPS ผ่านโดยไม่มีปัญหา

Score:0
ธง cn

คุณสามารถใช้ใบรับรองตัวแทน *.mydomain.com สำหรับผู้รับมอบฉันทะของคุณ
ใบรับรองคีย์ส่วนตัว + นี้จะใช้ได้กับโดเมนย่อยใดก็ได้
ฟรีจากการเข้ารหัส (certbot) หรือจ่ายจาก CA เช่น digicert

djdomi avatar
za flag
อย่าลืมเพิ่ม domain.tld และ *.domain.tld มิฉะนั้นใบรับรองของคุณจะมีข้อมูลขาดหายไป ;)
Score:0
ธง us

คุณสามารถใช้ ลำธาร โมดูลเพื่อส่งผ่านโปรโตคอล TLS ไปยังไคลเอนต์

ฉันไม่ได้ใช้การกำหนดค่านี้ด้วยตัวเอง ดังนั้นอาจไม่ถูกต้อง 100% แต่ควรแสดงหลักการ

ลำธาร {
    ฟัง 443;
    ssl_preread บน;
    proxy_connect_timeout 1 วินาที;
    proxy_timeout 3 วินาที;
    proxy_pass $อัพสตรีม;
}

แผนที่ $ssl_preread_server_name $อัพสตรีม {
    site1.example.com 127.0.0.1:6001;
    site2.example.com 127.0.0.2:6002;
    ไซต์เริ่มต้น 1;
}

ใน ลำธาร บล็อก เราเปิดใช้งานการอ่านข้อมูลโปรโตคอล SSL ล่วงหน้า Nginx แยกฟิลด์ SNI ออกเป็น $ssl_preread_server_name ตัวแปร.

เราใช้ แผนที่ คุณสมบัติในการแปลงชื่อเซิร์ฟเวอร์ล่วงหน้าเป็นปลายทาง จากนั้นใช้ปลายทางเป็น ลำธาร โมดูล proxy_pass ปลายทาง.

ที่นี่ nginx อ่านเฉพาะชื่อโฮสต์สำหรับการเชื่อมต่อ SSL จากนั้นพร็อกซีการเชื่อมต่อ TCP ไปยังปลายทางสำหรับชื่อโฮสต์นั้น

โพสต์คำตอบ

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