ความสับสนระหว่างใบรับรองที่ลงนามและข้อผิดพลาด: - x509: ใบรับรองที่ลงนามโดยหน่วยงานที่ไม่รู้จัก

ดังนั้นฉันจึงทำงานกับ matrix.org synapse homeserver และพยายามรวมศูนย์

ฉันได้รับใบรับรองสำหรับโฮมเซิร์ฟเวอร์ของฉัน มันมี 3 ไฟล์อยู่ข้างใน chain.crt(binary),server.crt(non-binary) และ server.key(non-binary)

server.crt ได้เริ่มต้นใบรับรองแล้ว และ server.key มีรหัสส่วนตัว ฉันกำลังย้อนกลับพร็อกซีโฮมเซิร์ฟเวอร์ของฉันด้วยเว็บเซิร์ฟเวอร์ Nginx และในการกำหนดค่าของ Nginx ฉันได้ชี้ใบรับรอง SSL ไปที่ server.crt และคีย์ SSl ไปที่ server.key

ปัญหาที่ฉันได้รับใน https://federationtester.matrix.org/ แสดงว่า x509: ลงนามใบรับรองแล้ว โดยผู้มีอำนาจที่ไม่รู้จัก

ฉันจำเป็นต้องรวม chain.crt (ไฟล์ไบนารี) ไว้ด้วยหรือไม่


person curious_21    schedule 20.11.2019    source แหล่งที่มา


คำตอบ (2)


โดยทั่วไปแล้ว แนวทางปฏิบัติที่ดีที่จะรวมใบรับรองระดับกลางไว้ในการกำหนดค่า TLS ของคุณ แต่โดยปกติแล้วใบรับรองควรตรวจสอบความถูกต้องอย่างถูกต้องอยู่แล้ว เนื่องจากโดยปกติแล้วไคลเอนต์จะมีใบรับรองระดับกลางต่างๆ ในร้านค้าของตนและสามารถสร้างห่วงโซ่ในลักษณะนั้นได้

ใบรับรองของคุณลงนามโดย CA สาธารณะหรือไม่ ไซแนปส์ต้องการใบรับรองดังกล่าวตั้งแต่สองเวอร์ชัน ใบรับรองเริ่มต้นอาจเป็นแบบลงนามด้วยตนเอง ยกเว้นว่าคุณได้กำหนดค่าไคลเอ็นต์ ACME ในตัวเพื่อดึงข้อมูลจาก Let's Encrypt

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

person lub    schedule 20.11.2019
comment
ใบรับรองลงนามโดย CA thawte สาธารณะ ฉันไม่ได้ใช้ ACME ในตัวเนื่องจากฉันได้รับใบรับรองจาก CA - person curious_21; 20.11.2019
comment
เป็นใบรับรองระดับกลางของ chain.crt และหากเป็นใบรับรองระดับกลางแล้วจะรวมไว้ในเว็บเซิร์ฟเวอร์ nginx ได้อย่างไร - person curious_21; 20.11.2019
comment
เฉพาะเบราว์เซอร์เท่านั้นที่มีใบรับรองระดับกลางในร้านค้า แทบทุกสิ่งทุกอย่างจะต้องมีใบรับรองลูกโซ่ที่เหมาะสมในการตั้งค่า - person Tulir; 20.11.2019
comment
มันใช้งานได้แล้ว ฉันใช้ไซต์ whatsmychaicert.com เพื่อรับใบรับรองลูกโซ่และต่อท้ายมัน ขอบคุณ lub และ Tulir - person curious_21; 20.11.2019
comment
@ShreyasPandey ขอบคุณที่แนะนำเว็บไซต์นั้น! ฉันติดอยู่กับการตั้งค่าเซิร์ฟเวอร์ Matrix ของฉัน (สร้างแทนไซแนปส์) เป็นเวลาหลายวัน - person stommestack; 05.02.2021

nginx ต้องการใบรับรองเซิร์ฟเวอร์ (ลีฟ) และ ใบรับรองเชน (ระดับกลาง) ทั้งในรูปแบบ PEM (สิ่งที่คุณเรียกว่าไม่ใช่ไบนารี) ในไฟล์เดียวกัน แต่สิ่งที่คุณเรียกว่าไบนารี่นั้นแทบจะเป็นสิ่งที่ซอฟต์แวร์จำนวนมากเรียกว่า DER (ซึ่งเป็นการเข้ารหัสไบนารี่เฉพาะ) ของ ASN.1 ซึ่ง X.509 ใช้) หากคุณมี OpenSSL (หรือได้รับ) ให้ใช้

openssl x509 -in chain.binary -inform der -out chain.pem

จากนั้นต่อท้าย chain.pem ต่อท้าย server.crt; หรือคุณสามารถทำสิ่งนี้ได้ในขั้นตอนเดียว

openssl x509 -in chain.binary -inform der >>server.crt

หากวิธีนี้ใช้ไม่ได้ผล เป็นไปได้ chain.crt ของคุณเป็นสิ่งที่แปลกกว่า เช่น PKCS7/CMS ในรูปแบบไบนารี่/DER โพสต์ไฟล์ hex dump หรือทำให้ไฟล์นั้นพร้อมใช้งานในที่เช่น pastebin

หากคุณไม่มี/รับ OpenSSL มีเครื่องมืออื่นๆ ที่สามารถใช้ได้ ขึ้นอยู่กับสภาพแวดล้อมของคุณ ระบุระบบปฏิบัติการของคุณและเครื่องมือหลักๆ ที่มีอยู่ เช่น Java

person dave_thompson_085    schedule 20.11.2019
comment
ขอบคุณสำหรับความช่วยเหลือเดฟ! ดังนั้นฉันจึงใช้ whatsmychaincert.com ไซต์นี้เพื่อรับใบรับรองลูกโซ่ จากนั้นจึงต่อท้ายส่วนท้ายของ server.crt และ มันได้ผล เพิ่งมีข้อสงสัยเท่าที่ฉันรู้ว่า linux จะอ่านไฟล์ server.crt จากล่างขึ้นบนนั่นหมายความว่าเนื้อหาก่อนหน้าของ server.crt นั้นเป็นสื่อกลางและใบรับรองลูกโซ่ที่ฉันได้รับคือใบรับรองหลักหรือไม่ ถ้าไม่ใช่ อันไหนคือรูทและอันไหนคือใบรับรองระดับกลางหรือใบรับรองปลาย? - person curious_21; 20.11.2019
comment
'Linux' ไม่อ่านไฟล์ใบรับรองเลย บางโปรแกรมบน Linux และบนระบบอื่น ๆ เช่น nginx ทำ แต่ฉันไม่รู้ ใด ๆ (ทุกที่) ที่อ่านว่า 'ล่างขึ้นบน' - คุณได้สิ่งนั้นมาจากไหน ฉันต้องดูว่า nginx ทำการประมวลผลล่วงหน้าก่อนที่จะมอบให้กับ OpenSSL หรือไม่ แต่จะปลอดภัยที่สุดถ้าคุณมี server=leaf=End-Entity ก่อนและ chain=intermediate วินาที; คุณไม่จำเป็นต้องรูทเลย (เซิร์ฟเวอร์ SSL/TLS ไม่จำเป็นต้องส่งรูทเพราะไคลเอนต์จะต้องมีมันอยู่แล้วเสมอ แม้ว่าบางคนจะส่งมันโดยไม่จำเป็นเพราะสะดวกและได้รับอนุญาต) - person dave_thompson_085; 22.11.2019