ฉันจะมั่นใจได้อย่างไรว่า stunnel ส่ง certs CA ระดับกลางทั้งหมด


13

คอมพิวเตอร์สองสามเครื่อง แต่ไม่มากที่สุดกำลังปฏิเสธใบรับรอง SSL จากเว็บเซิร์ฟเวอร์ของฉัน ปัญหาดูเหมือนว่าคอมพิวเตอร์บางเครื่องปฏิเสธ CA certs ดูเหมือนว่าปัญหาจะปรากฏใน Mac OS X 10.6 เมื่อไม่ได้รับการอัพเดตอย่างสมบูรณ์

ตามที่http://www.sslshopper.com/index.php?q=ssl-checker.html#hostname=beta.asana.com - ไม่มีปัญหา

อ้างอิงจากhttp://certlogik.com/sslchecker/ไม่มีการส่งใบรับรองกลาง

หนังสือรับรองของฉันมาจาก Starfield Technologies และฉันใช้sf_bundle.crtจากที่นี่: certs.godaddy.com/anonymous/repository.seam

ฉันจัดการ SSL บนเซิร์ฟเวอร์ของฉันผ่าน stunnel ด้วยสิ่งต่อไปนี้stunnel.conf:

cert = $CODEZ/admin/production/proxy/asana.pem
CAfile = $CODEZ/admin/production/proxy/sf_bundle.crt
pid =
client = no

[<forwarded port>]
accept = 443
connect = 8443

ความคิดใดที่ฉันสามารถทำผิดได้?

คำตอบ:


17

CAFileตัวเลือกกำหนดค่า CA กับการใช้ใบรับรองการตรวจสอบลูกค้า; นี่ไม่ใช่สิ่งที่คุณต้องการ

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

-----BEGIN CERTIFICATE-----
(certificate from asana.pem file pasted here)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(intermediate certificate here; copy-paste the top chunk from the bundle)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(root certificate here; copy-paste the bottom chunk from the bundle)
-----END CERTIFICATE-----

สิ่งนี้จะทำให้ stunnel แสดงห่วงโซ่ใบรับรองทั้งหมดแก่ลูกค้า

ชิ้นอาหารอันโอชะอีกหนึ่ง; openssl s_clientคำสั่งเป็นประโยชน์อย่างมากสำหรับการทดสอบปัญหาห่วงโซ่ใบรับรองและการตรวจสอบวิธีการบริการของคุณจะนำเสนอใบรับรองของ

แก้ไข: ตกลง .. ห่วงโซ่ของใบรับรองใบรับรองนั้นมีความลึกสามระดับ แต่เชนที่เชื่อถือได้นั้นมีความลึกสองระดับ มีบางอย่างไม่ถูกต้อง

ใบรับรองระดับสูง ("ผู้ออกใบรับรองความปลอดภัยระดับสูงของ Starfield") ได้รับการลงนามโดยผู้ออกชื่อ "ผู้ออกใบรับรองระดับ Starfield ระดับ 2" ด้วยการเริ่มต้นด้วยรหัสประจำตัวad7e1c28.. แต่ใบรับรองที่สองในชุดข้อมูลควรเป็นใบรับรองเดียวกันที่แน่นอนมีรหัสประจำตัวเริ่มต้นด้วย363e4734และวันหมดอายุ 10 ปีก่อนหน้า จากนั้นใบรับรองที่สาม (root) คือผู้ลงนามของใบรับรองระดับกลางที่รวมอยู่ แต่ทั้งสองนั้นไม่มีความสัมพันธ์ใด ๆ กับใบรับรองแรก!

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

เนื่องจากเป็นสิ่งที่สับสนโดยไม่มีความผิดของตัวคุณเองฉันเดาชื่อ DNS ของคุณและคว้าใบรับรองและฉันคิดว่านี่ควรจะเป็นเชนที่คุณต้องการ: http://pastebin.com/Lnr3WHc8


ขอบคุณมันมีประโยชน์มาก! ฉันไม่สามารถลงคะแนนได้เพราะฉันไม่มีคะแนนตัวแทน แต่ฉันต้องการ :-)
Jack Stahl

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

1

Qualys SSLLabs มีประโยชน์มากสำหรับการตรวจสอบการกำหนดค่าของคุณหลังการเปลี่ยนแปลง

https://www.ssllabs.com/ssldb/analyze.html

ตรวจสอบว่าคุณมี

  • ยันต์ที่แข็งแกร่งเปิดใช้งาน
  • ยันต์อ่อนแอปิดการใช้งาน
  • ห่วงโซ่ใบรับรองเสร็จสมบูรณ์และอยู่ในลำดับที่ถูกต้อง

1

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

ในการพิจารณาชื่อไฟล์ที่คุณควรใช้คุณสามารถใช้โปรแกรม c_hash ที่มาพร้อมกับ OpenSSL (ใน/usr/local/ssl/miscไดเรกทอรี):

c_hash some_certificate.pem
a4644b49.0 => some_certificate.pem

a4644b49.0ดังนั้นในกรณีดังกล่าวข้างต้นที่คุณต้องการเปลี่ยนชื่อไฟล์ไปยัง
(โปรดทราบว่าเป็นศูนย์ไม่ใช่ตัวอักษร 'O' หลังจากจุดในชื่อไฟล์)

หากคุณไม่มีc_hashโปรแกรมคุณสามารถเรียกใช้คำสั่ง OpenSSL ที่เหมาะสมเพื่อกำหนดค่าแฮช:

openssl x509 -hash -noout -in some_certificate.pem
a4644b49

และหากคุณกำลังประสบปัญหานี้เนื่องจากคุณกำลังพยายามใช้ websockets กับ android cordova อย่าลืมเพิ่ม wss ลงในรายการที่อนุญาตพิเศษของ Cordova ด้วยตนเองเนื่องจาก * รวม http และ https เท่านั้น


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

2
บวกอย่างน้อยเพียงส่วนที่ยกมา stunnel จะเชยสั่นคลอนเว้นแต่คุณจะตั้งชื่อห่วงโซ่ใบรับรองเป็นแฮชของไฟล์
BrightEyed

นอกจากนี้การผนวก. 0 ไม่จำเป็นสำหรับเรา ขอบคุณสำหรับการแก้ไขการสะกดคำ btw, โยนโพสต์ขึ้นหลังจากคืน looooong; D
BrightEyed

เยี่ยมมากดีใจที่ได้ตรวจสอบความถูกต้อง ฉันเข้าใจฉันอยู่ในวันที่ 3 ติดต่อกัน (11 แล้ว 14 ชั่วโมงในวันนี้อาจจะอีก 14 ชม.)
austinian

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