ซึ่งกันและกัน TLS (mTLS) การตรวจสอบสิทธิ์จะสร้างกรอบงานที่ปลอดภัยสำหรับการตรวจสอบสิทธิ์ทั้งของผู้ใช้และอุปกรณ์ IoT คู่มือนี้จะแนะนำคุณตลอดขั้นตอนการใช้งาน mTLS เพื่อให้มั่นใจถึงการตรวจสอบสิทธิ์แบบสองทิศทางที่ปลอดภัยระหว่างไคลเอนต์และเซิร์ฟเวอร์
คู่มือการเริ่มต้น
การตั้งค่าการร่วมกัน TLS ทำตามขั้นตอนง่ายๆ ขั้นแรก ให้สร้างใบรับรองเซิร์ฟเวอร์และไคลเอ็นต์ที่จำเป็น จากนั้น กำหนดค่าเซิร์ฟเวอร์ของคุณให้ต้องใช้ใบรับรองไคลเอ็นต์ จากนั้นตั้งค่าไคลเอ็นต์ของคุณด้วยใบรับรองของพวกเขา และดำเนินการตรวจสอบใบรับรองที่เหมาะสม ในที่สุด ให้ทดสอบการเชื่อมต่อเพื่อให้แน่ใจว่าทุกอย่างทำงานตามที่คาดหวัง
SSL แบบทางเดียวและแบบรวม /TLS การยืนยันตัวตน
หนึ่งในคุณสมบัติที่กำหนดของ SSL /TLS โปรโตคอลเป็นบทบาทในการรับรองความถูกต้องของบุคคลอื่นที่ไม่ระบุตัวตนบนเครือข่ายคอมพิวเตอร์ (เช่นอินเทอร์เน็ต) เมื่อคุณเยี่ยมชมเว็บไซต์ที่มีบุคคลทั่วไปเชื่อถือได้ SSL /TLS ใบรับรองเบราว์เซอร์ของคุณสามารถตรวจสอบได้ว่าเจ้าของเว็บไซต์ได้แสดงให้เห็นถึงการควบคุมชื่อโดเมนนั้นไปยังผู้ออกใบรับรอง (CA) ของบุคคลที่สามที่เชื่อถือได้เช่น SSL.com หากการตรวจสอบนี้ล้มเหลวเว็บเบราว์เซอร์จะเตือนคุณว่าอย่าไว้ใจไซต์นั้น สำหรับแอปพลิเคชันส่วนใหญ่ SSL /TLS ใช้ประเภทนี้ การรับรองความถูกต้องทางเดียว ของเซิร์ฟเวอร์ไปยังไคลเอนต์ ไคลเอนต์ที่ไม่ระบุตัวตน (เว็บเบราว์เซอร์) เจรจาเซสชันที่เข้ารหัสกับเว็บเซิร์ฟเวอร์ซึ่งนำเสนอ SSL / ที่เชื่อถือได้ต่อสาธารณะTLS ใบรับรองเพื่อระบุตัวตนในระหว่าง SSL /TLS การจับมือกัน: การรับรองความถูกต้องร่วมกันซึ่งทั้งสองเซิร์ฟเวอร์ และ ไคลเอนต์ใน SSL /TLS เซสชันได้รับการรับรองความถูกต้องนอกจากนี้ยังเป็นไปได้และมีประโยชน์มากในบางสถานการณ์ ในการพิสูจน์ตัวตนร่วมกันเมื่อเซิร์ฟเวอร์ได้รับการรับรองความถูกต้องในระหว่างการจับมือกันเซิร์ฟเวอร์จะส่งไฟล์CertificateRequest
ข้อความถึงลูกค้า ไคลเอนต์จะตอบสนองโดยการส่งใบรับรองไปยังเซิร์ฟเวอร์เพื่อตรวจสอบความถูกต้อง:
การรับรองความถูกต้องของลูกค้าผ่านทางร่วมกัน TLS ต้องมีใบรับรองรวมถึง Client Authentication (1.3.6.1.5.5.7.3.2)
การใช้คีย์ขยาย (EKU) ถูกติดตั้งบนอุปกรณ์ไคลเอนต์ SSL.com ทั้งหมด ใบรับรองการลงนามอีเมลไคลเอ็นต์และเอกสาร รวมถึงการพิสูจน์ตัวตนไคลเอ็นต์
คู่มือการใช้งานโดยละเอียด
ความเข้าใจร่วมกัน TLS
แบบดั้งเดิม TLS ให้การรับรองความถูกต้องและการเข้ารหัสเซิร์ฟเวอร์ แต่ร่วมกัน TLS ก้าวไปอีกขั้นด้วยการกำหนดให้ทั้งสองฝ่ายต้องแสดงใบรับรองดิจิทัล การตรวจสอบสองทางนี้ช่วยให้แน่ใจถึงความถูกต้องของเซิร์ฟเวอร์ เปิดใช้งานการตรวจสอบความถูกต้องของไคลเอนต์ สร้างช่องทางการสื่อสารที่เข้ารหัส และป้องกันการโจมตีแบบ man-in-the-middle ผลลัพธ์คือการเชื่อมต่อที่ปลอดภัยสูง เหมาะสำหรับแอปพลิเคชันที่ละเอียดอ่อนและการสื่อสารของอุปกรณ์ IoT
เบื้องต้น
ก่อนเริ่มดำเนินการ โปรดแน่ใจว่าคุณสามารถเข้าถึง OpenSSL หรือเครื่องมือจัดการใบรับรองที่คล้ายกันได้ เซิร์ฟเวอร์เว็บของคุณต้องรองรับ TLSและคุณจะต้องเข้าถึง ผู้ออกใบรับรอง (CA) หรือความสามารถในการสร้าง CA ส่วนตัว ไคลเอ็นต์ของคุณยังต้องรองรับการตรวจสอบสิทธิ์โดยใช้ใบรับรองด้วย
ขั้นตอนที่ 1: การสร้างและการจัดการใบรับรอง
เริ่มต้นด้วยการสร้างใบรับรองที่จำเป็นสำหรับการตรวจสอบสิทธิ์ทั้งเซิร์ฟเวอร์และไคลเอนต์ การตั้งค่าใบรับรองเซิร์ฟเวอร์จำเป็นต้องสร้างคีย์ส่วนตัว การสร้างคำขอลงนามใบรับรองและการลงนามรับรองกับ CA ของคุณ
# สร้างคีย์ส่วนตัวของเซิร์ฟเวอร์
OpenSSL เกนซา -ออก เซิร์ฟเวอร์.คีย์ 2048
?
# สร้างคำขอลงนามใบรับรองเซิร์ฟเวอร์ (CSR)
OpenSSL ความต้องการ -ใหม่ -สำคัญ เซิร์ฟเวอร์.คีย์ -ออก เซิร์ฟเวอร์.csr
?
# ลงนามใบรับรองเซิร์ฟเวอร์ด้วย CA ของคุณ
OpenSSL x509 -req -in เซิร์ฟเวอร์.csr - เครื่องปรับอากาศ แคลิฟอร์เนีย.crt -CAKey ซีเอคีย์ -CAcreationserial -ออก server.crt
สำหรับใบรับรองไคลเอนต์ ให้ทำตามขั้นตอนเดียวกันเพื่อสร้างข้อมูลประจำตัวเฉพาะของพวกเขา:
# สร้างคีย์ส่วนตัวของไคลเอนต์
OpenSSL เกนซา -ออก ลูกค้า.คีย์ 2048
?
# สร้างลูกค้า CSR
OpenSSL ความต้องการ -ใหม่ -สำคัญ ลูกค้า.คีย์ -ออก ลูกค้า.CSR
?
# ลงนามรับรองลูกค้า
OpenSSL x509 -req -in ลูกค้า.CSR - เครื่องปรับอากาศ แคลิฟอร์เนีย.crt -CAKey ซีเอคีย์ -CAcreationserial -ออก ลูกค้า.crt
ขั้นตอนที่ 2: การกำหนดค่าเซิร์ฟเวอร์
เซิร์ฟเวอร์จะต้องกำหนดค่าให้ต้องใช้และตรวจยืนยันใบรับรองไคลเอนต์ นี่คือตัวอย่างการกำหนดค่าสำหรับ Nginx:
เซิร์ฟเวอร์ {
ฟัง 443 เอสเอสแอล;
ชื่อเซิร์ฟเวอร์ ตัวอย่าง.com;
?
ssl_certificate /เส้นทาง/ถึง/เซิร์ฟเวอร์.crt;
ssl_certificate_key /เส้นทาง/ถึง/เซิร์ฟเวอร์.สำคัญ;
ใบรับรองลูกค้า SSL /เส้นทาง/ไป/ca.crt;
ssl_verify_client บน;
ssl_โปรโตคอล TLSv12 TLSv1.3;
ssl_ciphers สูง:!เป็นโมฆะ:!MD5;
การเข้ารหัส SSL_prefer_server บน;
}
สำหรับเซิร์ฟเวอร์ Apache ให้ใช้การกำหนดค่านี้:
<VirtualHost *:443>
ชื่อเซิร์ฟเวอร์ example.com
เครื่องยนต์ SSL on
ไฟล์ใบรับรอง SSLC /เส้นทาง/ไปยัง/เซิร์ฟเวอร์.crt
SSLCertificateKeyFile /เส้นทาง/ไปยัง/เซิร์ฟเวอร์.คีย์
SSLCACertificateFile เส้นทาง /ไป/ca.crt
SSLVerifyClient ต้องการ
SSL ตรวจสอบความลึก 1
ขั้นตอนที่ 3: การใช้งานไคลเอนต์
การตรวจสอบสิทธิ์ผ่านเบราว์เซอร์จำเป็นต้องนำเข้าใบรับรองไคลเอนต์ไปยังที่เก็บใบรับรองของเบราว์เซอร์ของคุณ เบราว์เซอร์แต่ละตัวจะจัดการกระบวนการนี้แตกต่างกัน แต่โดยทั่วไป คุณจะพบตัวเลือกนี้ในการตั้งค่าความปลอดภัยหรือความเป็นส่วนตัว
สำหรับอุปกรณ์ IoT คุณจะต้องใช้การตรวจสอบสิทธิ์โดยใช้ใบรับรองในโค้ดของคุณ นี่คือตัวอย่างการใช้ไลบรารีคำขอของ Python:
นำเข้า การร้องขอ
?
ใบรับรองลูกค้า = ('ไคลเอนต์.crt', 'ไคลเอนต์.คีย์')
ใบรับรอง CA = 'คา.ค.ร.ต'
?
คำตอบ = การร้องขอ.ได้รับ('https://example.com',
ใบรับรอง=ใบรับรองลูกค้า,
ตรวจสอบ=ใบรับรอง CA)
ขั้นตอนที่ 4: การตรวจสอบใบรับรอง
การตรวจสอบใบรับรองอย่างเหมาะสมถือเป็นสิ่งสำคัญสำหรับความปลอดภัย การใช้งานของคุณควรตรวจสอบความสมบูรณ์ของห่วงโซ่ใบรับรอง ตรวจสอบวันที่หมดอายุ ตรวจสอบสถานะการเพิกถอน และให้แน่ใจว่าใช้คีย์อย่างถูกต้อง นี่คือตัวอย่างการใช้งาน:
รถในตำนานจากเกม การอ่านรหัส นำเข้า x509
รถในตำนานจากเกม การอ่านรหัส.วัตถุอันตราย.แบ็กเอนด์ นำเข้า ค่าเริ่มต้นของแบ็กเอนด์
?
def ตรวจสอบใบรับรอง(เส้นทางใบรับรอง):
กับ เปิด(เส้นทางใบรับรอง, 'อาร์บี') as ใบรับรองไฟล์:
ข้อมูลใบรับรอง = ใบรับรองไฟล์.อ่าน()
ใบรับรอง = x509.โหลดใบรับรอง_pem_x509(ข้อมูลใบรับรอง, ค่าเริ่มต้นของแบ็กเอนด์-
if ใบรับรอง.ไม่ถูกต้องหลังจากนี้ < วันเวลา.วันเวลา.ตอนนี้-
ยก ค่าข้อผิดพลาด(“ใบรับรองหมดอายุแล้ว”)
ลอง:
คีย์_การใช้งาน = ใบรับรอง.ส่วนขยาย.รับส่วนขยายสำหรับคลาส(x509.การใช้งานคีย์)
if ไม่ คีย์_การใช้งาน.ความคุ้มค่า.ลายเซ็นดิจิทัล:
ยก ค่าข้อผิดพลาด(“ใบรับรองไม่ถูกต้องสำหรับลายเซ็นดิจิทัล”)
ยกเว้น x509.ส่วนขยาย.ไม่พบส่วนขยาย:
ยก ค่าข้อผิดพลาด("ไม่พบส่วนขยายการใช้งานคีย์ที่จำเป็น")
กรณีการใช้งานการพิสูจน์ตัวตนร่วมกัน
ซึ่งกันและกัน TLS การพิสูจน์ตัวตนสามารถใช้ได้ทั้งในการรับรองความถูกต้องของผู้ใช้ปลายทางและสำหรับการตรวจสอบอุปกรณ์ร่วมกันบนเครือข่ายคอมพิวเตอร์การตรวจสอบผู้ใช้
ธุรกิจและองค์กรอื่น ๆ สามารถแจกจ่ายใบรับรองไคลเอ็นต์ดิจิทัลให้กับผู้ใช้ปลายทางเช่นพนักงานผู้รับเหมาและลูกค้า ใบรับรองไคลเอ็นต์เหล่านี้สามารถใช้เป็นปัจจัยในการตรวจสอบสิทธิ์สำหรับการเข้าถึงทรัพยากรขององค์กรเช่น Wi-Fi, VPN และเว็บแอปพลิเคชัน เมื่อใช้แทน (หรือเพิ่มเติมจาก) ข้อมูลรับรองชื่อผู้ใช้ / รหัสผ่านแบบเดิมร่วมกัน TLS มีข้อดีด้านความปลอดภัยหลายประการ:- ซึ่งกันและกัน TLS การรับรองความถูกต้องจะไม่เสี่ยงต่อการถูกขโมยข้อมูลรับรองผ่านทางกลวิธีเช่น ฟิชชิ่ง. ของ Verizon รายงานการสอบสวนการละเมิดข้อมูลปี 2020 บ่งชี้ว่าเกือบหนึ่งในสี่ (22%) ของการละเมิดข้อมูลเกิดจากฟิชชิง แคมเปญฟิชชิ่งมีไว้สำหรับข้อมูลประจำตัวที่เก็บเกี่ยวได้ง่ายเช่นรหัสผ่านเข้าสู่ระบบเว็บไซต์ไม่ใช่คีย์ส่วนตัวสำหรับใบรับรองไคลเอ็นต์ของผู้ใช้ เพื่อเป็นการป้องกันฟิชชิ่งเพิ่มเติมทั้งหมดของ SSL.com การลงนามอีเมลไคลเอ็นต์และเอกสาร ใบรับรองรวมถึงความน่าเชื่อถือต่อสาธารณะ S/MIME สำหรับอีเมลที่ลงชื่อและเข้ารหัส
- ซึ่งกันและกัน TLS การรับรองความถูกต้องไม่สามารถถูกบุกรุกได้จากสุขอนามัยของรหัสผ่านที่ไม่ดีหรือการโจมตีรหัสผ่านอย่างดุร้าย คุณสามารถกำหนดให้ผู้ใช้ต้องสร้างรหัสผ่านที่คาดเดายาก แต่คุณจะรู้ได้อย่างไรว่าพวกเขาไม่ได้ใช้รหัสผ่านที่ "ปลอดภัย" เดียวกันในเว็บไซต์ต่าง ๆ 50 เว็บไซต์หรือเขียนไว้ในกระดาษโน้ต ก แบบสำรวจของ Google ปี 2019 ระบุว่าผู้ใช้ 52% ใช้รหัสผ่านซ้ำสำหรับหลายบัญชีและ 13% ของผู้ใช้ใช้รหัสผ่านเดิมซ้ำสำหรับ ทั้งหมด ของบัญชีของพวกเขา
- ใบรับรองลูกค้ามีความชัดเจน ห่วงโซ่ของความไว้วางใจและสามารถจัดการได้จากส่วนกลาง ด้วยการร่วมกัน TLSการตรวจสอบผู้ออกใบรับรอง (CA) ที่ออกข้อมูลรับรองของผู้ใช้จะถูกส่งเข้าสู่กระบวนการตรวจสอบสิทธิ์ SSL.com ของ เครื่องมือการจัดการออนไลน์, SWS APIและการเข้าถึงโปรโตคอลมาตรฐานเช่น SCEP ทำให้การออกต่ออายุและเพิกถอนข้อมูลรับรองเหล่านี้ได้อย่างรวดเร็ว!
- บุคคลหรือองค์กรที่ต้องการใบรับรองเพียงหนึ่งหรือสองสามใบสามารถสั่งซื้อได้ ใบรับรองการลงนามอีเมลไคลเอ็นต์และเอกสาร อาหารตามสั่งจาก SSL.com
- สามารถใช้โปรโตคอลเช่น SCEP, EST และ CMP เพื่อลงทะเบียนและต่ออายุใบรับรองไคลเอ็นต์โดยอัตโนมัติสำหรับอุปกรณ์ของ บริษัท และ BYO
- สำหรับลูกค้าที่ต้องการใบรับรองจำนวนมากสามารถรับส่วนลดขายส่งผ่านทางของเรา โปรแกรมผู้ค้าปลีกและการจัดซื้อจำนวนมาก.
แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัย
การรักษาความปลอดภัยที่แข็งแกร่งต้องมีมากกว่าแค่การใช้งานมTLS:
- นำการหมุนเวียนใบรับรองอัตโนมัติมาใช้เพื่อให้แน่ใจว่าใบรับรองได้รับการอัปเดตเป็นประจำ
- จัดทำรายการเพิกถอนใบรับรองเพื่อทำให้ใบรับรองที่ถูกบุกรุกกลายเป็นโมฆะอย่างรวดเร็ว
- ใช้ขนาดคีย์ที่แข็งแกร่งอย่างน้อย 2048 บิตสำหรับคีย์ RSA
- กำหนดค่าเซิร์ฟเวอร์ของคุณให้ยอมรับเฉพาะระบบที่ปลอดภัยเท่านั้น TLS เวอร์ชันและชุดรหัสที่แข็งแกร่ง
กลยุทธ์การรักษาความปลอดภัยของลูกค้าของคุณควรครอบคลุมถึงการปกป้องคีย์ส่วนตัวด้วยการควบคุมการเข้าถึงที่เข้มงวด การตรวจสอบความปลอดภัยเป็นประจำจะช่วยรักษาความสมบูรณ์ของระบบในระยะยาว
การแก้ไขปัญหาทั่วไป
ปัญหาห่วงโซ่ใบรับรอง
เมื่อทำการใช้งานม.TLSคุณอาจพบปัญหาเกี่ยวกับห่วงโซ่ใบรับรอง ซึ่งโดยทั่วไปมักเกิดจาก:
- โซ่ใบรับรองที่ไม่สมบูรณ์
- ติดตั้งใบรับรองกลางไม่ถูกต้อง
ในการแก้ไขปัญหาเหล่านี้:
- ตรวจสอบว่าการกำหนดค่าการยึดความน่าเชื่อถือของคุณถูกต้อง
- ตรวจสอบให้แน่ใจว่ามีใบรับรองที่จำเป็นทั้งหมดอยู่
ปัญหาการเชื่อมต่อ
ปัญหาการเชื่อมต่อมักเกี่ยวข้องกับ:
- การบล็อคการตั้งค่าไฟร์วอลล์ TLS การจราจร
- การอนุญาตใบรับรองไม่ถูกต้อง
วิธีแก้ปัญหา:
- ตรวจสอบว่าใบรับรองของคุณมีชื่อถูกต้อง
- ให้แน่ใจว่าตรงตามการใช้งานที่ต้องการ
ข้อควรพิจารณาด้านประสิทธิภาพ
การพิจารณาประสิทธิภาพมีความสำคัญในระดับขนาดใหญ่ เพื่อเพิ่มประสิทธิภาพ:
- นำการแคชเซสชันมาใช้เพื่อลดค่าใช้จ่ายในการจับมือซ้ำๆ
- เลือกชุดรหัสที่มีประสิทธิภาพที่สมดุลระหว่างความปลอดภัยและประสิทธิภาพ
- ตรวจสอบกระบวนการตรวจสอบใบรับรองของคุณเพื่อให้แน่ใจว่าไม่ได้สร้างค่าใช้จ่ายที่ไม่จำเป็น
สรุป
ซึ่งกันและกัน TLS ให้ความปลอดภัยที่แข็งแกร่งสำหรับทั้งผู้ใช้และการตรวจสอบสิทธิ์อุปกรณ์ IoT คู่มือนี้จะแนะนำคุณเกี่ยวกับขั้นตอนสำคัญของการใช้งาน ตั้งแต่การสร้างใบรับรองไปจนถึงการแก้ไขปัญหาทั่วไป โดยปฏิบัติตามแนวทางเหล่านี้และรักษาแนวทางปฏิบัติด้านความปลอดภัยที่ดี คุณสามารถสร้างระบบการตรวจสอบสิทธิ์ที่ปลอดภัยซึ่งป้องกันการโจมตีบนเครือข่ายได้ พร้อมทั้งรับรองการระบุตัวตนไคลเอนต์ที่เชื่อถือได้