TLS 1.2 ในรูปแบบโมโนบน Ubuntu

ฉันได้ติดตั้ง mono mon -V เวอร์ชันล่าสุดแล้วให้ฉัน:

Mono JIT compiler version 4.8.0 (Stable 4.8.0.495/e4a3cf3 Wed Feb 22 18:30:58 UTC 2017)

จากบันทึกประจำรุ่น(http://www.mono-project.com/docs/about-mono/releases/4.8.0/) มันบอกว่าฉันต้อง:

หากต้องการใช้งาน คุณต้องตั้งค่าตัวแปรสภาพแวดล้อม MONO_TLS_PROVIDER เป็นค่า “btls” ดังนี้:

ฉันไม่ได้ทำสิ่งนี้ ฉันพบวิธีตรวจสอบว่าใช้ 1.2(http://mono.1490590.n4.nabble.com/Still-stuck-in-a-bad-place-with-TLS-1-2-หรือไม่support-td4669106.html) เมื่อฉันเรียกใช้สิ่งนี้ ฉันจะได้รับ:

TLS 1.2 เวอร์ชันการเข้ารหัสที่ทันสมัยที่สุด

ดังนั้นคำถามของฉันคือ ถูกต้องหรือไม่ที่จะบอกว่าฉันไม่จำเป็นต้องทำอะไรนอกจากติดตั้งโมโนล่าสุดและค่าเริ่มต้นคือ 1.2


person Noel    schedule 10.03.2017    source แหล่งที่มา


คำตอบ (1)


วิธีที่ดีที่สุดในการตรวจสอบว่า TLS 1.2 ทำงานหรือไม่คือการพยายามเชื่อมต่อกับบริการ TLS 1.2 เท่านั้น

wget -q https://bugzilla.xamarin.com/attachment.cgi?id=16785 -O Program.cs
mcs Program.cs /r:System.Net.Http.dll
mono Program.exe

และผลลัพธ์:

เกิดข้อผิดพลาดขณะส่งการแจ้งเตือน TLS (Fatal:InternalError): System.IO.IOException: การรับรองความถูกต้องหรือการถอดรหัสล้มเหลว ---> System.IO.IOException: ไม่สามารถอ่านข้อมูลจากการเชื่อมต่อการขนส่ง: การเชื่อมต่อรีเซ็ตโดยเพียร์ ---> System.Net.Sockets.SocketException: การเชื่อมต่อถูกรีเซ็ตโดยเพียร์

อีกครั้งด้วย BTLS ในครั้งนี้ (ไม่จำเป็นต้องคอมไพล์อีกครั้ง):

export MONO_TLS_PROVIDER="btls"
mono Program.exe

ผลลัพธ์:

OK!

อย่างที่คุณเห็น BTLS ยังไม่ใช่ค่าเริ่มต้น ใช่ ยังมีวิธีอื่นในการพิจารณาสิ่งนี้ เช่น การดูสแต็กเทรซของการเรียก แต่วิธีนี้เป็นวิธีที่ง่ายที่สุด เนื่องจากจะส่งผลให้เกิดข้อยกเว้นหากตำแหน่งข้อมูลรองรับเฉพาะ TLS 1.2 และคุณพยายามเชื่อมต่อกับอุปกรณ์นั้นโดยใช้ TLS ที่ล้าสมัย 1.0 หรือ 1.1

อย่างไรก็ตาม รหัสมาจากรายงานข้อบกพร่อง ของฉัน . ผลลัพธ์ด้านบนเสร็จสิ้นด้วย Mono 4.9.1 ซึ่งควรจะเหมือนกันใน 4.8

person JustArchi    schedule 13.03.2017