การใช้ใบรับรอง SSL ที่ลงชื่อด้วยตนเองเป็นสิ่งที่ผิดหรือไม่


29

ใบรับรอง SSL มีราคาค่อนข้างแพงสำหรับบุคคลทั่วไปโดยเฉพาะหากคุณต้องการรักษาความปลอดภัยโดเมนย่อยที่แตกต่างกัน ฉันกำลังพิจารณาใช้ใบรับรองที่ลงนามเองเนื่องจากโฟกัสหลักของฉันคือการรักษาความปลอดภัยการเชื่อมต่อและไม่รับรองตัวเอง

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

คำตอบ:


14

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

ตรวจสอบบทความที่นี่http://www.sslshopper.com/article-when-are-self-signed-certificates-acceptable.htmlสำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้


14

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

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

ในกรณีที่ใบรับรองที่ลงชื่อด้วยตัวเองไม่ทำงานหรือคุณอยากได้ใบรับรอง "ของจริง" ฉันขอแนะนำLet's Encryptซึ่งเป็นโครงการที่เริ่มต้นโดย Internet Security Research Group และสนับสนุนโดย บริษัท อินเทอร์เน็ตรายใหญ่ที่ให้บริการใบรับรอง SSL ที่ ไม่มีราคา. พวกเขาสามารถทำได้เนื่องจากกระบวนการตรวจสอบที่ใช้นั้นเป็นไปโดยอัตโนมัติอย่างสมบูรณ์และในความเป็นจริงเว็บเซิร์ฟเวอร์ที่สนับสนุนโปรโตคอล ACME (เช่นCaddyที่ฉันใช้อยู่ในปัจจุบัน) สามารถรับใบรับรองได้ด้วยตนเอง Let's Encrypt ไม่ได้ตรวจสอบว่าคุณเป็นคนที่คุณพูดว่าคุณเป็น; เพียงตรวจสอบว่าเว็บเซิร์ฟเวอร์ของคุณสามารถให้บริการเนื้อหาในโดเมนที่อ้างสิทธิ์เท่านั้น Let's Encrypt ได้รับการสนับสนุนโดยเบราว์เซอร์หลักทั้งหมด แต่เป็นที่ทราบกันดีว่าการยืนยันมีน้อยที่สุดดังนั้นหากคุณใช้งานเว็บไซต์อีคอมเมิร์ซหรืออะไรก็ตามที่ผู้คนกำลังส่งข้อมูลที่สำคัญคุณควรใช้เงินเพื่อรับ ใบรับรองที่มีระดับการตรวจสอบที่สูงขึ้น

ฉันเคยแนะนำใบรับรอง StartSSL ฟรีจากStartComสำหรับผู้ที่ไม่ต้องการชำระเงินสำหรับการตรวจสอบความถูกต้อง แต่ไม่ใช่อีกต่อไป StartCom ได้รับอย่างลับๆโดย WoSign ในปี 2559 และต่อมาได้ออกใบรับรองผิดกฎหมายสำหรับหลายโดเมน ดังนั้นเบราว์เซอร์หลักจึงยกเลิกการสนับสนุนใบรับรอง StartCom (เท่าที่ฉันรู้ IE ไม่เคยสนับสนุนพวกเขาอย่างไรก็ตาม) Let's Encrypt นั้นสะดวกกว่ามาก


+1 สำหรับวรรคแรก ฉันใช้ใบรับรองแบบลงนามด้วยตนเองสำหรับ Webmin บนเซิร์ฟเวอร์ของฉันเพราะเป็นเพียงตัวฉันและผู้ออกแบบที่ใช้งาน แต่ฉันจะไม่แนะนำให้ทำเพื่อการใช้งานทั่วไป
DisgruntledGoat

3

มันเป็นไม่ได้ปฏิบัติไม่ดีกับการใช้ใบรับรองลงนามด้วยตนเอง ใบรับรองที่ลงนามเองมีจุดประสงค์ในทางปฏิบัติมากมายซึ่งไม่เหมาะสมที่จะใช้ใบรับรองที่ลงนามโดย CA

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

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

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

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


ฉันไม่เข้าใจว่าทำไมคุณถึงใช้ใบรับรอง SSL ในกรณีของคุณ? คุณระบุว่าไม่ต้องการพิมพ์รหัสผ่านหลายครั้ง: คุณสามารถใช้คีย์ส่วนตัว SSH กับ ssh-agent เพื่อตรวจสอบสิทธิ์คุณโดยอัตโนมัติในเซิร์ฟเวอร์แต่ละเครื่องโดยไม่ต้องพิมพ์รหัสผ่านมากกว่าหนึ่งครั้ง
Wookai

@ Wookai: นั่นจะเป็นวิธีหนึ่งในการทำเพื่อ SSH แต่การใช้ใบรับรองไคลเอนต์ SSL นั้นเป็นวิธีการตรวจสอบไคลเอนต์ทั่วไปที่มีความครอบคลุมมากกว่า ฉันยังใช้ใบรับรองไคลเอ็นต์ของฉันสำหรับการตรวจสอบ HTTPSเช่นเดียวกับอีเมลและหากฉันเลือกที่จะตั้งค่า CA ภายในในภายหลังจะมีความยืดหยุ่น / มีประสิทธิภาพยิ่งขึ้น ณ จุดนี้ฉันไม่จำเป็นต้องติดตั้งคีย์ส่วนตัวสำหรับลูกค้า / ผู้ใช้ทุกคน มันเป็นเพียงโซลูชั่นที่มีประสิทธิภาพมากขึ้น IMO
Lèsemajesté

2

หากคุณรักษาความปลอดภัยหลายโดเมนย่อยคุณอาจต้องการใช้ใบรับรองไวด์การ์ดซึ่ง (ขึ้นอยู่กับจำนวนโดเมนย่อยที่คุณรักษาความปลอดภัย) ซึ่งอาจมีราคาถูกกว่าการซื้อหนึ่งโดเมนต่อโดเมน ตัวอย่างเช่น RapidSSL มีไวด์การ์ดที่ถูกกว่าแต่ละ certs เมื่อคุณมีสี่โดเมนที่ใช้งานอยู่

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