Score:3

ไม่สามารถเชื่อมต่อกับ Amazon RDS ด้วย TLSv1.2

ธง in

ฉันตั้งค่าเครื่องใหม่ด้วย Ubuntu 20 และพบว่าไม่สามารถเชื่อมต่อกับฐานข้อมูล RDS ของฉันได้อีกต่อไป

แอปพลิเคชันสปริงบูตที่ควรเชื่อมต่อกับสภาพแวดล้อมการพัฒนามีข้อยกเว้นต่อไปนี้:
javax.net.ssl.SSLHandshakeException: ไม่มีโปรโตคอลที่เหมาะสม (โปรโตคอลถูกปิดใช้งานหรือชุดรหัสไม่เหมาะสม)

ดังนั้นฉันจึงขุด mySql workbench และลองใช้สิ่งนั้น ส่งผลให้เกิดข้อผิดพลาดนี้:
ssl_choose_client_version:โปรโตคอลที่ไม่รองรับ

การมองหาสิ่งที่สอนฉันว่า Ubuntu 20 มีการตั้งค่า TLSv1.2 เป็นเวอร์ชัน TLS ขั้นต่ำ และข้อผิดพลาดนี้จะเกิดขึ้นหากเซิร์ฟเวอร์ MySQL ของคุณไม่รองรับ (จากที่นี่: https://askubuntu.com/questions/1193629/why-mysql-workbench-8-x-errors-out-with-an-ssl-connection-error-choose-client-v). ฉันลองใช้ workbench โดยปิด SSL และแน่นอนว่ามันสามารถสร้างการเชื่อมต่อได้

ปัญหาที่ชัดเจนในเรื่องนี้คือ Amazon RDS... TLS 1.2 เป็นเวอร์ชันเดียวที่ ไม่สามารถ ถูกปิดใช้งาน เนื่องจากเป็นเวอร์ชันที่ใช้ภายใน ดังที่กล่าวไว้ที่นี่: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Ciphers.html

จริง ๆ แล้วไม่น่าจะมีปัญหาอะไร ฉันเริ่มสงสัยว่าเวอร์ชัน TLS เป็นปัญหาจริงหรือไม่ แต่เนื่องจากฉันไม่มีโอกาสในการขายอื่น ฉันจึงทำตามตำราอาหารในคำตอบที่นี่เพื่อกำหนดค่า openssl ในเครื่องของฉันใหม่เพื่ออนุญาต TLS เวอร์ชัน 1 ขั้นต่ำและปรับลดระดับความปลอดภัย: https://askubuntu.com/questions/1233186/ubuntu-20-04-how-to-set-lower-ssl-security-level

และคุณคงไม่รู้หรอกว่าตอนนี้ Workbench เชื่อมต่อกับ SSL ที่กำหนดให้จำเป็นแล้ว Spring-Boot ยังไม่ได้ ฉันเดาว่าฉันต้องกำหนดค่าที่อื่นเพื่อรับบันทึกช่วยจำ แต่แทนที่จะเสียเวลากับเรื่องนั้น ฉันขอแก้ปัญหา จริง ปัญหาคือฉันไม่สามารถเชื่อมต่อผ่าน TLSv1.2 ได้ ในขณะที่ฉันสามารถบอกได้ว่าจริงๆ แล้วฉันควรจะทำได้ นั่นจะดีกว่าอย่างมากในการลดระดับความปลอดภัยของฉัน ฉันพยายามต่ออายุใบรับรองฐานข้อมูลในกรณีที่อาจเป็นปัญหา แต่คอนโซลการจัดการไม่พบสิ่งผิดปกติกับใบรับรอง และดูเหมือนจะไม่ยอมให้ฉันเปลี่ยนถ้าไม่จำเป็น ดังนั้นฉันจึงคิดไม่ออกว่าจะลองอะไรต่อไป

in flag
ที่เกี่ยวข้อง: https://stackoverflow.com/questions/67246010/the-server-selected-protocol-version-tls10-is-not-accepted-by-client-preferences
Score:2
ธง in

ปรากฎว่าการรองรับ TLS ขึ้นอยู่กับเวอร์ชันของโปรแกรมฐานข้อมูลที่แน่นอนที่คุณใช้บน RDS Aurora mySQL 5.6 รองรับเฉพาะ TLSv1.0 จนถึงเวอร์ชัน 1.23.1 ซึ่ง TLSv1.1 และ 1.2 จะพร้อมใช้งาน เวอร์ชันของเราคือ 1.22.something ดังนั้นฉันจึงต้องอัปเกรดเครื่องยนต์

ถึงอย่างนั้น มันจะใช้งานไม่ได้ เพราะ Ubuntu 20 ยังบังคับใช้ความยาวของคีย์ขั้นต่ำที่ 2048 บิต ซึ่ง Aurora mysql 5.6 นั้นไม่สามารถทำได้ และสำหรับทั้งหมดที่ฉันสามารถบอกได้ว่าสิ่งนี้ไม่สามารถเปลี่ยนแปลงได้ คุณจะพบเอกสารประกอบสำหรับพารามิเตอร์ฐานข้อมูลที่สามารถใช้เพื่อเปลี่ยนความยาวของคีย์ diffie-helman แต่กลับกลายเป็นว่าสิ่งเหล่านี้มีไว้สำหรับ SqlServer เท่านั้น ไม่ใช่ MySQL ดังนั้น คุณยังคงต้องไปและใช้การเปลี่ยนแปลงใน opensl.cnf ของคุณตามที่อธิบายไว้ในคำตอบที่ยอมรับที่นี่: https://askubuntu.com/questions/1233186/ubuntu-20-04-how-to-set-lower-ssl-security-level สิ่งนี้เปลี่ยน SECLEVEL ของคุณเป็น 1 ดังนั้น opensl จะยอมรับคีย์ DHE ที่สั้นกว่า

ถึงอย่างนั้น แอปพลิเคชันสปริงบูตของฉันจะไม่เชื่อมต่อ แม้ว่าตอนนี้โต๊ะทำงานจะทำได้แล้ว นี่เป็นเพราะ JDBC ไม่ได้บอกเซิร์ฟเวอร์ว่าสามารถทำ TLSv1.2 ได้ แม้ว่ามันจะทำได้ทั้งหมด (ตัดสินใจแปลกๆ นั่นล่ะ) ดังนั้นเซิร์ฟเวอร์จะไม่พยายามส่งการจับมือ 1.2 แม้ว่าจะทำได้ก็ตาม

ในการบอก JDBC ให้ใช้ TLSv1.2 คุณต้องผนวกเข้ากับสตริงการเชื่อมต่อ:

jdbc:myslq://<host>/<db>?enabledTLSProtocols=TLSv1.2

ตอนนี้ทุกอย่างเชื่อมต่อกัน

ฉันชอบที่จะให้ออโรร่าส่งคีย์ที่ยาวขึ้นแทนที่จะลดความปลอดภัยของ Ubuntu แต่ดูเหมือนจะไม่มีทาง ถ้าใครรู้จักอย่างใดอย่างหนึ่งโปรดแจ้งให้เราทราบ

โพสต์คำตอบ

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