Score:0

จำเป็นต้องรวมการอ้างอิงไฟล์ CA ในบล็อก Apache vhost config ของฉันหรือไม่

ธง dj

ฉันกำลังอัปเกรดเว็บเซิร์ฟเวอร์ Apache และสงสัยว่าจำเป็นต้องประกาศไฟล์ CA ในการกำหนดค่า vhost หรือไม่

การตั้งค่า vhost ของฉันคือ

SSLEngine เปิดอยู่
SSLCertificateFile /home/user/ssl/${SITE}-cert.pem
SSLCertificateKeyFile /home/user/ssl/${SITE}-key.pem
SSLCertificateChainFile /home/user/ssl/${SITE}-ca.pem
#SSLCACertificateFile /home/user/ssl/${SITE}-ca.pem

ตามค่าเริ่มต้น Apache มาพร้อมกับไฟล์ ไฟล์ใบรับรอง SSLC และ SSLCertificateKeyFile คล่องแคล่ว. เช่นเดียวกับแพ็คเกจของ Debian ฉันเข้าใจทั้งสองสิ่งนี้

โดยค่าเริ่มต้นทั้งคู่ SSLCertificateChainFile และ SSLCACertificateFile ถูกปิดใช้งานบนซอร์สของ Apache และแพ็คเกจของ Debian ฉันคิดว่าฉันเข้าใจสิ่งเหล่านี้ แต่ตอนนี้ยังไม่แน่ใจ

เว็บไซต์ทั้งหมดของฉันทำงานได้ดีกับทั้งสองอย่าง แคลิฟอร์เนีย ปิดใช้งานคำสั่ง

แต่ฉันขาดอะไรไปหรือเปล่า? การปิดใช้งานทั้งสองอย่างทำให้เซิร์ฟเวอร์ของฉันจัดเตรียม CA เบื้องหลัง เช่น จาก /etc/ssl/certs ของระบบหรือไม่

Let's Encrypt ให้ไฟล์ CA ระหว่างการต่ออายุ ดังนั้นฉันจึงคิดว่าการระบุ SSLCertificateChainFileแต่ฉันต้องการที่จะเข้าใจว่าเหตุใดไซต์ของฉันจึงทำงานไม่ได้

คำสั่ง CA ทั้งสองนี้ไม่ได้มีจุดประสงค์คล้ายกัน ไฟล์ CA-bundle ของ cURL นำมาจาก Mozilla? ชี้ได้ไหมครับ SSLCACertificateFile บนเซิร์ฟเวอร์ของฉันและเรียกมันว่าวัน?

ฉันเข้าใจว่าลูกค้าดูแลการตรวจสอบใบรับรองของเว็บไซต์โดยใช้ CA ที่ได้รับอนุญาตของตัวเอง ฉันผิดเหรอ?

เอกสารดูเหมือนจะไม่ให้ข้อมูลเชิงลึก:

SSLCertificateChainFile และ SSLCACertificateFile

Score:2
ธง cn

ประการแรก การส่งเชนกลางไปยังใบรับรองรูทพร้อมกับการตอบสนองของเซิร์ฟเวอร์นั้นไม่ได้ตรงเสมอไป จำเป็นแต่แนะนำให้ปฏิบัติ

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

หากคุณไม่ส่งเชนกลาง คุณจะเหลือรายงานประปรายว่าผู้คนไม่สามารถเชื่อมต่อกับบริการของคุณได้ และนั่นอาจขึ้นอยู่กับเบราว์เซอร์ เวอร์ชันของเบราว์เซอร์ และระบบปฏิบัติการพื้นฐาน

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

คุณไม่จำเป็นต้องใช้คำสั่ง ChainFile ใน Apache เพราะคุณสามารถเชื่อมไฟล์ใบรับรอง pem จากใบรับรองปลายทางไปยังรูทและใช้กับคำสั่ง SSLCertificateFile เท่านั้น

สิ่งที่คุณไม่ต้องทำคือส่งใบรับรองหลัก เพราะหากไคลเอนต์จะใช้สิ่งนั้นจริง ๆ ก็จะเอาชนะการใช้งานจริงของการตรวจสอบความถูกต้องของ SSL

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

นอกจากนี้ หากมีข้อสงสัย ให้ใช้เครื่องมือตรวจสอบที่ยอดเยี่ยมของ Qualys SSL Labs: https://www.ssllabs.com/ssltest/

in flag
คำถามไม่ได้เกี่ยวกับใบรับรองหลัก แต่เกี่ยวกับ CA ที่ใช้สำหรับการรับรองไคลเอ็นต์ สิ่งนี้สามารถเป็น CA รูทของไซต์ได้ แต่ไม่จำเป็นต้องทำเช่นนั้น
Gerrit avatar
cn flag
OP พูดถึงการโฮสต์ 'เว็บไซต์' ดังนั้นในกรณีนี้ เฉพาะ 'SSLCertificateChainfile' เท่านั้นที่เกี่ยวข้อง
Jeff avatar
dj flag
*หากคุณไม่ส่งเชนกลาง คุณจะเหลือรายงานประปรายว่าผู้คนไม่สามารถเชื่อมต่อกับบริการของคุณได้* นี่คือสิ่งที่ฉันต้องการหลีกเลี่ยง หากการระบุ `SSLCACertificateFile` หรือ `SSLCertificateChainFile` จะช่วยป้องกันสิ่งนี้ได้ ฉันจะเพิ่มคำสั่งที่เหมาะสม ถ้ามันไม่สร้างความแตกต่าง ฉันจะไม่
Gerrit avatar
cn flag
คุณควรส่งห่วงโซ่ขั้นกลางอย่างแน่นอน จะไม่มีความแตกต่างหากคุณเชื่อมมันเข้ากับ end certificate และส่งใน `SSLCertificateFile` หรือคุณแยก end certificate และ chain ออกจากกันและส่ง chain ใน `SSLCertificateChainFile` อย่างที่ฉันอธิบาย เป็นระยะ ๆ กับคนที่ทำงานบนเซิร์ฟเวอร์เก่าที่จะบล็อกพวกเขาจริง ๆ แต่ก็ช่วยไม่ได้
Jeff avatar
dj flag
ฉันพบเอกสาร [LetsEncrypt](https://eff-certbot.readthedocs.io/en/stable/using.html#where-are-my-certificates) ซึ่งช่วยเคลียร์ทุกอย่าง ขอบคุณอีกครั้ง.
Gerrit avatar
cn flag
ใช่ แท้จริงแล้วมันคือ LetsEncrypt ที่ห่วงโซ่ระดับกลางเริ่มต้นได้รับการปรับให้เหมาะสมเพื่อความเข้ากันได้สูงสุดกับไคลเอ็นต์มากที่สุดเท่าที่จะเป็นไปได้ แต่ในกระบวนการทำลายความเข้ากันได้กับซอฟต์แวร์เซิร์ฟเวอร์เก่าบางตัวหากผู้คนไม่ดูแลรักษา สิ่งนี้เกิดขึ้นหลังจากรูทเก่าหมดอายุ
A.B avatar
cl flag
A.B
โดยทั่วไปฉันเห็นด้วยกับสิ่งที่ Gerrit เขียน แต่เพื่อที่จะแยกแยะเกี่ยวกับการกำหนดค่า apache เฉพาะ การกำหนดค่าเริ่มต้นเดียวกันมักจะบอกว่า SSLCertificateChainfile สามารถชี้ไปที่ใบรับรอง SSLCertificateFile เดียวกันได้ หากมีการต่อเชื่อมระหว่างเซิร์ฟเวอร์+ตัวกลาง ที่จริงแล้วการไม่กำหนดในกรณีดังกล่าวก็ใช้งานได้เหมือนกัน (และมีเหตุผลมากกว่า) คุณลักษณะนี้ (อนุญาตให้ *ไม่* ใช้ SSLCertificateChainfile) มีให้ตั้งแต่ apache httpd 2.4.8 : https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslcertificatechainfile
Score:1
ธง se

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

Jeff avatar
dj flag
ในบริบทของเว็บเซิร์ฟเวอร์แบบเก่าที่ให้บริการ https โดยทั่วไปแล้วการกำหนดคำสั่ง CA จำเป็นหรือไม่ ฉันไม่รู้ว่ากำลังเย็บเล่มด้วย OCSP หรือไม่ และไม่แน่ใจว่าฉันกำลังตรวจสอบใบรับรองไคลเอ็นต์หรือไม่เมื่อแสดงหน้า https ของฉัน
in flag
หากคุณไม่ทราบว่าคุณใช้คุณลักษณะเหล่านี้หรือไม่ มีโอกาสสูงที่คุณจะไม่ใช้
Jeff avatar
dj flag
ฉันคิดว่าฉันเข้าใจแล้ว ลูกค้าส่วนใหญ่ตรวจสอบความถูกต้องของเซิร์ฟเวอร์ด้วย CA แต่เซิร์ฟเวอร์ส่วนใหญ่ที่ให้บริการ https ไม่ได้ตรวจสอบความถูกต้องของไคลเอ็นต์ ดังนั้น ฉันไม่จำเป็นต้องระบุคำสั่ง `CA` เว้นแต่ว่าฉันจะเริ่มตรวจสอบลูกค้าของฉัน เสียงใช่มั้ย
Steffen Ullrich avatar
se flag
@Jeff: ใช่ โดยทั่วไปแล้วจะไม่มีการใช้ใบรับรองไคลเอ็นต์ และการเย็บเล่ม OCSP (หากเปิดใช้งานเลย) สามารถตรวจสอบกับ CA ของระบบได้

โพสต์คำตอบ

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