ใบรับรอง SSL ที่ลงชื่อด้วยตนเองเป็นความปลอดภัยที่ผิดพลาดหรือไม่
หากคุณถูกดักฟังผู้ใช้จะยอมรับใบรับรองแบบที่เขา / เธอทำอยู่เสมอ
ใบรับรอง SSL ที่ลงชื่อด้วยตนเองเป็นความปลอดภัยที่ผิดพลาดหรือไม่
หากคุณถูกดักฟังผู้ใช้จะยอมรับใบรับรองแบบที่เขา / เธอทำอยู่เสมอ
คำตอบ:
คำถามที่น่าสนใจมันขึ้นอยู่กับการใช้งานในความคิดของฉัน คุณยังคงได้รับการปกป้องในแง่ของเซสชั่นจะถูกเข้ารหัส แต่คุณไม่มีทางที่จะบอกได้ว่ามันเป็นใบรับรอง SSL ที่ถูกต้องที่นำเสนอให้คุณเว้นแต่คุณจะแจกจ่ายใบรับรอง CA root ของคุณให้กับผู้ใช้ / ลูกค้า สำหรับโปรแกรมทดสอบ / dev ภายในสิ่งนี้จะใช้งานได้ดีคุณจะสร้างใบรับรอง CA แบบรูทที่คุณใช้แจกจ่ายให้กับผู้ใช้ของคุณ (สามารถทำได้ผ่านนโยบายกลุ่มใน Windows และผ่านทางบรรทัดคำสั่ง openssl ใน Linux / BSD) จากนั้นใช้ใบรับรอง root นั้น ลงนาม CSR ของคุณ ผู้ใช้จะไม่เห็นคำเตือนหรือสิ่งใดและคุณรู้ว่าใบรับรองได้รับการลงนามโดย CA ภายในของคุณ
สำหรับไซต์ภายนอกที่คุณไม่สามารถรับรองได้ฉันยังคงบอกว่าใบรับรองที่ลงชื่อด้วยตนเองนั้นดีกว่า SSL ใด ๆ เลยหากคุณกำลังส่งรหัสผ่านหรือข้อมูลที่ละเอียดอ่อนอื่น ๆ ผ่านการเชื่อมต่อ
อย่างไรก็ตามในด้านบวกมีผู้ออกใบรับรอง "การค้า" ราคาถูกมากGoDaddyเป็นหนึ่งในนั้น คุณสามารถได้รับใบรับรองประมาณ 40 ยูโรต่อปี GoDaddy ยังเสนอ certs ฟรีให้กับเว็บไซต์ของ OpenSource อีกด้วย
ฉันจะไม่เห็นด้วยครั้งเดียวในพื้นที่ทางเทคนิคแคบและอีกครั้งในบริเวณทั่วไป
เหตุผลทางเทคนิคที่แคบคือ OP ถามเกี่ยวกับใบรับรองที่ลงชื่อด้วยตนเองและคำตอบอื่น ๆ อีกมากมายอ้างถึงใบรับรองที่ลงนามโดย CA ส่วนตัวซึ่งเป็นปัญหาที่แตกต่างกันเล็กน้อย แต่ก็ไม่แตกต่างกันมากนักดังนั้นจึงเป็นเพียงโน้ตที่ผ่านไป
ข้อโต้แย้งที่สำคัญคือฉันคิดว่าตราบใดที่ใบรับรองที่ลงนามในเชิงพาณิชย์นั้นมีค่าใช้จ่ายมากกว่าเรื่องเล็กน้อยและ 40 เหรียญต่อปีนั้นไม่ใช่ค่าใช้จ่ายเล็กน้อยสำหรับผู้คนจำนวนมากบนโลกใบนี้ - ใบรับรองที่ลงนามเองมีบทบาทสำคัญในการเล่น ในการรักษาความปลอดภัยอินเทอร์เน็ตมีให้ข้อ จำกัด ของพวกเขาได้รับการยอมรับ
ใบรับรองที่ลงนามเองเป็นเหมือนคีย์ ssh จากknown_hosts
ไฟล์ของฉัน หากไม่มีการตรวจสอบที่เป็นอิสระก็ไม่สามารถรับประกันได้ว่าฉันกำลังพูดคุยกับระบบที่ฉันเชื่อว่าฉันเป็น; แต่มันทำให้ฉันมั่นใจได้ว่าระบบที่ฉันกำลังพูดถึงตอนนี้เป็นระบบเดียวกับที่ฉันพูดไปเมื่อครั้งที่แล้วฉันคิดว่าฉันกำลังคุยกับมันอยู่ เราแคช ssh keys ตลอดเวลาและฉันยังไม่เคยพบกับผู้ดูแลระบบที่ตรวจสอบความเป็นอิสระมากกว่าเศษส่วนของคีย์สาธารณะในknown_hosts
ไฟล์ของเขา / เธอ
ใบรับรองที่ลงนามเอง (และสำหรับเรื่องนั้นใบรับรองที่ลงนามโดย CA ที่ไม่ถูกต้องโดยทั่วไป) นั้นดีกว่า SSL ไม่มากเลยตราบใดที่ผู้คนตระหนักดีว่าหากพวกเขายืนยันพวกเขาพวกเขาจะปลอดภัยในการสื่อสารกับตัวเองเท่านั้น ที่ปลายอีกด้านของระเบียน DNS และผู้ชายที่อยู่ตรงกลางขณะนี้อยู่ในสาย หากพวกเขาตรวจสอบใบรับรองอย่างอิสระการรับรองความถูกต้องและการเข้ารหัสอย่างน้อยที่สุดจะรุนแรงเท่ากับที่ได้รับจากใบรับรองที่ลงนามโดย CA ที่ได้รับการยอมรับ
นอกจากนี้ผู้ที่ต้องการที่จะนำเสนอการใช้ใบรับรองการลงนามโดยได้รับการยอมรับ CA เป็นยาครอบจักรวาลรักษาความปลอดภัยอินเทอร์เน็ตหนึ่งและเพียงอาจต้องคิดหนักเกี่ยวกับประเด็นดังกล่าวเป็นที่รวมของของรัฐบาลจีนลงนาม CA ในกำ Mozilla มาตรฐานและใบรับรอง SSL ที่ลงนามโดยหลอกลวงประชา
known_hosts
@MadHatter กำลังอ้างอิงเช่นกัน
สำหรับไซต์ภายนอกที่ผู้ใช้ไม่ได้ติดตั้งใบรับรอง CA ของคุณ (ซึ่งเป็นกรณีที่พบบ่อยที่สุด) ใช่ใบรับรองที่ลงนามด้วยตนเองจะให้ความปลอดภัยที่ผิดพลาดและทำให้แย่กว่าไร้ประโยชน์:
ก่อนอื่นหากไม่มีใบรับรอง CA ที่ติดตั้งไว้ล่วงหน้าผู้ใช้จะตรวจสอบว่าใบรับรองนั้นมาจากคุณจริง ๆ และไม่ใช่จากผู้โจมตีหรือไม่ โดยการจับคู่เขตข้อมูลใบรับรอง (CN ลายนิ้วมือและอื่น ๆ ) แน่นอน - แต่เทียบกับอะไร ดังนั้นตอนนี้คุณต้องมีช่องสัญญาณด้านข้างเพื่อตรวจสอบใบรับรอง - และในบางกรณีฉันเห็นว่าผู้ให้บริการสายการสนับสนุน (ที่ควรทำหน้าที่เป็นช่องทางด้านข้างสำหรับการตรวจสอบ) ไม่มีเบาะแสสิ่งที่ควรจะหมายถึง; นอกจากนี้การใช้งานช่องทางด้านข้างนั้นมีขนาดใหญ่กว่าการได้รับใบรับรองที่ลงนามโดย CA ที่น่าเชื่อถือดังนั้นผู้ใช้จะต้องเชื่อใจคุณอย่างสุ่มสี่สุ่มห้า
ประการที่สองการแจ้งเตือนที่น่ากลัวที่ผู้ใช้ได้รับนั้นน่ากลัวด้วยเหตุผลที่ดีเนื่องจากผู้ใช้ไม่สามารถ / ไม่ยืนยันใบรับรองที่นำเสนอพวกเขาอาจส่งข้อมูลอย่างปลอดภัยไปยัง Elbonian Haxx0r D00dz
ประการที่สามและที่แย่ที่สุดคือคุณกำลังทำให้ผู้ใช้ : "ดีพวกเขาบอกฉันว่าฉันควรเพิกเฉยต่อคำเตือนนั้นในhttps://mysite.example.com/และทั่งตีเหล็กก็ไม่ตกบนหัวฉัน ปลาทองก็ไม่ตายเช่นกันดังนั้นนั่นหมายความว่ามันเป็นอีกกล่องเตือนที่ไม่มีความหมายจริงดังนั้นฉันสามารถเพิกเฉยต่อกล่องนี้เมื่อใดก็ตามที่ฉันพบมัน - ฉันได้รับไอคอนรูปกุญแจที่สวยงามอยู่แล้ว
กล่าวอีกนัยหนึ่งระดับการป้องกันเปรียบได้กับ HTTP ธรรมดา (ยกเว้นการดักฟังแบบลวด: แม้ว่าข้อมูลจะถูกเข้ารหัสในการส่งผ่านซึ่งเป็นคุณสมบัติโลหิตจางค่อนข้างไม่มีการตรวจสอบปลายทาง) แต่ความรู้สึกของการป้องกันสูงเกินสมควร . การเปรียบเทียบรถไม่ดี: "ฉันมีระบบ ABS ดังนั้นตอนนี้ฉันจึงสามารถขับขี่ได้อย่างปลอดภัยยิ่งขึ้นในสภาพที่เลวร้าย" - ยกเว้นว่า ABS มีอยู่ในแผ่นพับการขายรถยนต์เท่านั้นโดยที่ไม่ได้อยู่ในรถ
การอ่านที่แนะนำ: OWASP SSL Best practice
TL; DR:ด้วยการใช้ใบรับรองที่ลงชื่อด้วยตนเองในไซต์สาธารณะคุณกำลังทำให้เน็ตกลายเป็นสถานที่ที่เลวร้ายยิ่งขึ้น
ขึ้นอยู่กับ ถ้าคุณคิดว่ามันทำให้คุณปลอดภัยยิ่งขึ้นมันจะเพิ่มความเสี่ยงของคุณเมื่อคุณเลือกที่จะทำสิ่งที่เสี่ยงกว่าด้วยการรักษาความปลอดภัยที่ผิดพลาด หากคุณปฏิบัติกับมันเทียบเท่ากับ HTTP แล้วฉันจะบอกว่าคุณปลอดภัยกว่าเดิมเล็กน้อย
หากไม่มี SSL / HTTPS ทุกคนที่มี wireshark ในเครือข่ายของคุณ (หรือเครือข่ายท้องถิ่นของใครก็ตามที่ลงชื่อเข้าใช้) สามารถฟังและรับชื่อผู้ใช้ / รหัสผ่านที่ส่งเป็นข้อความธรรมดาได้เล็กน้อย
ด้วย SSL ที่ลงนามด้วยตนเองพวกเขาไม่สามารถฟัง แต่ตอนนี้จะต้องปลอมเว็บไซต์ของคุณอาจแก้ไข DNS เพื่อทำการโจมตีคนที่อยู่ตรงกลาง (MITM) สิ่งนี้ยังคงเป็นภัยคุกคาม แต่ก็ยากที่จะทำให้สำเร็จ
ปัญหาอื่น ๆ ของการใช้ SSL ที่ลงชื่อด้วยตนเองคือเบราว์เซอร์จำนวนมากปฏิบัติกับใบรับรองที่ลงชื่อด้วยตนเองว่าเป็นภัยคุกคามความปลอดภัยที่สำคัญและเตือนคุณก่อนเข้า (เช่นโครม) ด้วยหน้าแดงขนาดใหญ่ http://www.sslshopper.com/article-ssl-certificates-in-google-chrome.html ซึ่งอาจเป็นความไม่สะดวกที่สำคัญ
ดังนั้นกำไรคือ: ถ้าคุณเรียกใช้บางสิ่งที่ไม่จำเป็นต้องมีความปลอดภัยเป็นพิเศษ (เช่นไม่มีข้อมูลบัตรเครดิตไม่มีหมายเลขประกันสังคม) และไม่สามารถซื้อใบรับรองที่เหมาะสมใบรับรองที่ลงนามเองอาจทำให้รู้สึกบางอย่าง (เพื่อป้องกันผู้ใช้เครือข่ายอื่นจากการดมกลิ่นข้อมูลการล็อกอินของพวกเขาได้อย่างง่ายดาย)
ขึ้นอยู่กับสิ่งที่คุณหมายถึงด้วย "ความปลอดภัย" และซึ่งเป็นขอบเขต
ตามตัวอย่างเบราว์เซอร์ของคุณมาพร้อมกับชุดของ CA ที่ยอมรับโดยค่าเริ่มต้น ซึ่งหมายความว่าเบราว์เซอร์ของคุณยอมรับใบรับรองใด ๆ ที่ออกโดย CA นี้ (จนกว่าจะตรงกับชื่อ dns) ตอนนี้ลองนึกภาพว่ารัฐบาลชั่วร้ายบางคนเป็นเจ้าของ CA หรืออาจบังคับให้ CA ออกใบรับรองสำหรับไซต์ที่คุณกำลังเยี่ยมชม จากนั้นในการทำ MITM นั้นง่ายมาก: พวกเขาสามารถเชื่อมต่อพร็อกซีของคุณส่งใบรับรองที่พวกเขามีให้กับเบราว์เซอร์และเบราว์เซอร์ของคุณจะยอมรับมันเนื่องจากมันมาจาก CA ที่ "เชื่อถือได้" จนกว่าพวกเขาจะโปร่งใส DNS (ซึ่งเป็นพื้นฐานสำหรับ MITM) นี้ก็โอเค
ดังนั้นรายการ "CA ที่ยอมรับ" นั้นเป็นช่องโหว่ใหญ่จนกระทั่งหนึ่งใน CA นี้ร่วมมือกับรัฐบาลชั่วร้าย การมี CA ของตัวเองดีกว่ามาก
แน่นอนคุณสามารถทำได้ใน บริษัท ของคุณหรือในบ้านเซิร์ฟเวอร์ของคุณเพราะคุณสามารถติดตั้งใบรับรอง CA ของคุณเองลงในไคลเอนต์ซึ่งคุณสามารถควบคุมได้ ในเซิร์ฟเวอร์สาธารณะคุณไม่สามารถจัดการกับผู้ใช้ใด ๆ ขอให้เขาเพิ่มข้อยกเว้นหรือเพิ่มใบรับรองของคุณ
ดังนั้นมันขึ้นอยู่กับสิ่งที่คุณหมายถึง "ความปลอดภัย" และขอบเขต หากคุณเป็นเจ้าของลูกค้าสำหรับแน่ใจว่าตนเองได้ลงนามแล้วจะปลอดภัยกว่าจนกว่าคุณจะติดตั้งใบรับรอง CA ของคุณเองบนไคลเอนต์
แน่นอนว่าคุณไม่สามารถทำได้บนเว็บไซต์สาธารณะเนื่องจากคุณไม่ได้เป็นลูกค้าทั้งหมด ดังนั้นคุณจะได้รับอันตรายจากพฤติกรรมที่แตกต่างซึ่งไม่ปลอดภัย