แต่ละโดเมนย่อยต้องการใบรับรอง SSL ของตัวเองหรือไม่


41

ฉันสร้างเซิร์ฟเวอร์ WebSocket ws.mysite.exampleซึ่งจะอาศัยอยู่บน ฉันต้องการให้เว็บซ็อกเก็ตเซิร์ฟเวอร์เข้ารหัสdomain.exampleSSL และเข้ารหัส SSL ฉันจำเป็นต้องซื้อใบรับรองใหม่สำหรับแต่ละโดเมนย่อยที่ฉันสร้างหรือไม่ ฉันต้องมีที่อยู่ IP เฉพาะสำหรับแต่ละโดเมนย่อยที่ฉันสร้างหรือไม่ ฉันจะมีโดเมนย่อยมากกว่าหนึ่งโดเมน

ฉันใช้ NGINX และ Gunicorn ที่ทำงานบน Ubuntu

คำตอบ:


44

ฉันจะตอบคำถามนี้ในสองขั้นตอน ...

คุณต้องการใบรับรอง SSL สำหรับแต่ละโดเมนย่อยหรือไม่?

ใช่และไม่ใช่ขึ้นอยู่กับ ใบรับรอง SSL www.domain.exampleมาตรฐานของคุณจะเป็นโดเมนเดียวบอกว่า มีหลายประเภทของ certs ที่คุณสามารถทำได้นอกเหนือจากใบรับรองมาตรฐานเดียวของโดเมน: wildcard และหลายโดเมน certs

  • ใบรับรองป่าการ์ดจะออกหาสิ่งที่ต้องการ*.domain.exampleและลูกค้าจะปฏิบัติเช่นนี้เป็นที่ถูกต้องสำหรับโดเมนใด ๆ ที่ลงท้ายด้วยdomain.exampleเช่นหรือwww.domain.examplews.domain.example

  • ใบรับรองหลายโดเมนที่ถูกต้องสำหรับรายการที่กำหนดไว้ล่วงหน้าของชื่อโดเมน ทำได้โดยใช้ฟิลด์ Subject Alternative Name ของหนังสือรับรอง ตัวอย่างเช่นคุณสามารถบอก CA ที่คุณต้องการใบรับรองหลายโดเมนสำหรับและdomain.example ws.mysite.exampleสิ่งนี้จะช่วยให้สามารถใช้กับชื่อโดเมนทั้งสองได้

หากตัวเลือกเหล่านี้ไม่เหมาะกับคุณคุณจะต้องมีใบรับรอง SSL ที่แตกต่างกันสองรายการ

ฉันต้องการ IP เฉพาะสำหรับแต่ละโดเมนย่อยหรือไม่

อีกครั้งนี่คือใช่และไม่ใช่ ... ทุกอย่างขึ้นอยู่กับเว็บ / แอปพลิเคชันเซิร์ฟเวอร์ ฉันเป็นผู้ชาย Windows ดังนั้นฉันจะตอบด้วยตัวอย่าง IIS

  • หากคุณใช้ IIS7 หรือเก่ากว่าคุณจะถูกบังคับให้ผูก SSL certs กับ IP และคุณไม่สามารถกำหนด certs หลายรายการให้กับ IP เดียวได้ สิ่งนี้ทำให้คุณต้องมี IP ที่แตกต่างกันสำหรับแต่ละโดเมนย่อยหากคุณใช้ใบรับรอง SSL เฉพาะสำหรับแต่ละโดเมนย่อย หากคุณกำลังใช้ใบรับรองหลายโดเมนหรือรับรองตัวแทนคุณสามารถใช้ IP เดียวเพราะคุณมีใบรับรอง SSL เพียงหนึ่งรายการเท่านั้นที่จะเริ่มต้นด้วย

  • หากคุณใช้ IIS8 หรือใหม่กว่าจะมีผลเช่นเดียวกัน อย่างไรก็ตาม IIS8 + มีการรองรับสิ่งที่เรียกว่า Server Name Indication (SNI) SNI อนุญาตให้คุณผูกใบรับรอง SSL กับชื่อโฮสต์ไม่ใช่กับ IP ดังนั้นชื่อโฮสต์ (ชื่อเซิร์ฟเวอร์) ที่ใช้ในการทำการร้องขอจะถูกใช้เพื่อระบุ SSL certificate ที่ IIS ควรใช้สำหรับการร้องขอ

  • หากคุณใช้ IP เดียวคุณสามารถกำหนดค่าเว็บไซต์เพื่อตอบสนองการร้องขอชื่อโฮสต์ที่เฉพาะเจาะจง

ฉันรู้ว่า Apache และ Tomcat รองรับ SNI ด้วยเช่นกัน แต่ฉันไม่คุ้นเคยพอที่จะรู้ว่าเวอร์ชันใดรองรับได้บ้าง

บรรทัดล่าง

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


ฉันกำลังใช้ gunicorn และ nginx บน Ubuntu
974407

ในกรณีนั้นควรใช้ SNI ตราบเท่าที่ OpenSSL (สำหรับ nginx) ได้รับการสนับสนุน SNI ที่ตามลิงค์ในคำตอบของ GomoX
pkeenan

ใบรับรองโดเมนย่อยบางรายการระบุโดเมนหลักเป็นทางเลือกดังนั้นคุณอาจพบว่าคุณสามารถทำ www.domain.com และ domain.com ได้ในใบรับรองเดียวด้วยที่อยู่ IP เดียว ระมัดระวังในการพิจารณากลุ่มเป้าหมายของคุณเมื่อพิจารณา SNI: IE บน XP ไม่รองรับซึ่งจะส่งผลกระทบต่อคุณกับผู้ใช้ระดับองค์กรและเบราว์เซอร์มือถือเก่า ๆ บางตัวเช่นหุ้น Android อย่างน้อย 2.3.5 ซึ่งคุณต้องพิจารณา หากคุณกำหนดเป้าหมายอุปกรณ์มือถือ (นี่คืออุปกรณ์ Android จำนวนมากที่เปิดใช้งานรุ่นเก่า)
David Spillett

@pkeenan - มันจะดีถ้าคำตอบที่ได้รับการปรับปรุงเพื่อให้สะท้อนถึงคุณสมบัติทางเทคนิคที่ชื่อโฮสต์สนับสนุนและโดเมนโดยไม่ต้องชื่อโฮสต์ - helpdesk.ssls.com/hc/en-us/articles/...
แรงจูงใจ

> ลูกค้าจะถือว่าสิ่งนี้ใช้ได้สำหรับโดเมนใด ๆ ที่ลงท้ายด้วย 'domain.com' เช่น 'www.domain.com' หรือ 'ws.domain.com' สิ่งนี้ทำให้ฉันเชื่อว่ามันจะถูกต้องabc.def.domain.comเช่นกันหรือไม่
Jeff

7

คุณสามารถรับใบรับรองสำหรับแต่ละโดเมนย่อยใบรับรองหลายโดเมนย่อยหรือใบรับรองตัวแทน (สำหรับ*.yoursite.example)

โดยทั่วไปแล้วพวกเขาจะมีค่าใช้จ่ายมากกว่าใบรับรองปกติเล็กน้อยและเนื่องจากคุณแบ่งปันใบรับรองเดียวโดยทั่วไปแล้วพวกเขาจึงไม่ใช่ตัวเลือกที่ดีที่สุดจากมุมมองด้านความปลอดภัยเว้นแต่ว่าคุณจะโฮสต์anything.mydomain.exampleแอปพลิเคชันประเภทหนึ่ง

นอกจากนี้คุณยังไม่จำเป็นต้องมีหลาย IP ถ้าคุณมีเว็บเซิร์ฟเวอร์ SNI ที่มีความสามารถ สิ่งนี้กล่าวว่า SNI ได้รับการสนับสนุนในเบราว์เซอร์สมัยใหม่เท่านั้น (IE6 และด้านล่างไม่สามารถใช้งานได้) เวอร์ชันล่าสุดของ Nginx และ Apache รองรับ SNI อย่างโปร่งใส (เพียงเพิ่มโฮสต์เสมือนที่เปิดใช้งาน SSL)


คุณหมายถึงอะไรโดย "ไม่ใช่ตัวเลือกที่ดีที่สุดจากมุมมองด้านความปลอดภัย"
แรงบันดาลใจ

4
ใบรับรองเดียวที่ใช้ร่วมกันสำหรับโฮสต์ทั้งหมดของคุณเปลี่ยนการละเมิดใบรับรองเป็นภัยคุกคามความปลอดภัยระดับโดเมนแทนที่จะส่งผลกระทบต่อโดเมนย่อยใดก็ตามที่แนบใบรับรอง ตัวอย่างเช่นใบรับรองที่ใช้สำหรับ www.yoursite.com ซึ่งเป็นการติดตั้ง WordPress จะเหมือนกับใบรับรองสำหรับ Payments.yoursite.com ซึ่งเป็นแอปพลิเคชันการประมวลผลบัตรเครดิตที่ปลอดภัย หากการรั่วไหลครั้งแรกที่สองจะถูกบุกรุก
GomoX

0

คุณอาจต้องการใบรับรองแยกต่างหากสำหรับแต่ละโดเมนย่อยหรือคุณสามารถซื้อไวด์การ์ดรับรอง ( *.domain.example) - ราคาแพงกว่า แต่ก็สมเหตุสมผลถ้าคุณโฮสต์โดเมนย่อยจำนวนมาก

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

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