Điểm:3

Không thể kết nối với Amazon RDS bằng TLSv1.2

lá cờ in

Tôi đã thiết lập một máy mới với Ubuntu 20 và nhận thấy rằng tôi không thể kết nối với cơ sở dữ liệu RDS của mình nữa.

Ứng dụng khởi động mùa xuân được cho là kết nối với môi trường phát triển đưa ra ngoại lệ sau:
javax.net.ssl.SSLHandshakeException: Không có giao thức thích hợp (giao thức bị vô hiệu hóa hoặc bộ mật mã không phù hợp)

Vì vậy, tôi đã tìm ra bàn làm việc mySql và thử với nó. Điều đó dẫn đến lỗi này:
ssl_choose_client_version: giao thức không được hỗ trợ

Tìm kiếm điều đó đã dạy tôi rằng Ubuntu 20 có TLSv1.2 được đặt làm phiên bản TLS tối thiểu và lỗi này xảy ra nếu máy chủ MySQL của bạn không hỗ trợ nó (từ đây: https://askubuntu.com/questions/1193629/why-mysql-workbench-8-x-errors-out-with-an-ssl-connection-error-choose-client-v). Tôi đã thử bàn làm việc với SSL đã tắt và đủ chắc chắn rằng nó có thể thiết lập kết nối.

Vấn đề rõ ràng với điều này, đây là Amazon RDS... TLS 1.2 là phiên bản duy nhất không thể bị vô hiệu hóa, vì đó là phiên bản được sử dụng nội bộ, như được chỉ ra ở đây: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Ciphers.html

Vì vậy, thực sự, không nên có một vấn đề. Tôi bắt đầu nghi ngờ liệu phiên bản TLS có thực sự là vấn đề hay không. Nhưng vì tôi không có bất kỳ khách hàng tiềm năng nào khác, nên tôi đã làm theo sách dạy nấu ăn trong câu trả lời tại đây để định cấu hình lại openssl cục bộ của mình để cho phép TLS phiên bản 1 tối thiểu và hạ cấp mức bảo mật: https://askubuntu.com/questions/1233186/ubuntu-20-04-how-to-set-lower-ssl-security-level

Và bạn có biết không, Workbench hiện được kết nối với SSL được đặt thành bắt buộc. Spring-Boot vẫn không được, tôi đoán tôi phải định cấu hình nó ở một nơi khác để nó nhận được bản ghi nhớ. Nhưng thay vì lãng phí thời gian vào việc đó, tôi muốn giải quyết vấn đề thực vấn đề, đó là tôi không thể kết nối thông qua TLSv1.2, trong khi đối với tất cả những gì tôi có thể nói là tôi thực sự có thể. Điều đó sẽ tốt hơn rất nhiều so với việc hạ cấp bảo mật của tôi. Tôi đã cố gắng gia hạn chứng chỉ cơ sở dữ liệu trong trường hợp đó có thể là vấn đề, nhưng bảng điều khiển quản lý không tìm thấy gì sai với chứng chỉ và dường như sẽ không cho phép tôi thay thế nếu tôi không cần. Vì vậy, tôi có một chút ý tưởng về những gì cần thử tiếp theo.

lá cờ in
Liên quan: https://stackoverflow.com/questions/67246010/the-server-sered-protocol-version-tls10-is-not-accepted-by-client-preferences
Điểm:2
lá cờ in

Hóa ra hỗ trợ TLS phụ thuộc vào phiên bản công cụ cơ sở dữ liệu chính xác mà bạn đang sử dụng trên RDS. Aurora mySQL 5.6 chỉ hỗ trợ TLSv1.0 cho đến phiên bản 1.23.1, khi đó TLSv1.1 và 1.2 sẽ khả dụng. Phiên bản của chúng tôi là 1.22.something, vì vậy tôi phải nâng cấp động cơ.

Thậm chí sau đó mặc dù vậy, nó sẽ không hoạt động vì Ubuntu 20 cũng thực thi độ dài khóa tối thiểu là 2048 bit, điều mà Aurora mysql 5.6 không cung cấp và đối với tất cả những gì tôi có thể nói thì điều này không thể thay đổi được. Bạn sẽ tìm thấy tài liệu về các tham số cơ sở dữ liệu có thể được sử dụng để điều chỉnh langth của khóa diffie-helman, nhưng hóa ra những tham số đó chỉ dành cho SqlServer, không phải MySQL. Vì vậy, bạn vẫn phải tiếp tục và áp dụng các thay đổi đối với openssl.cnf của mình như được mô tả trong câu trả lời được chấp nhận tại đây: https://askubuntu.com/questions/1233186/ubuntu-20-04-how-to-set-lower-ssl-security-level Điều này thay đổi SECLEVEL của bạn thành 1, vì vậy openssl sẽ chấp nhận các khóa DHE ngắn hơn.

Thậm chí sau đó các ứng dụng khởi động mùa xuân của tôi sẽ không kết nối, mặc dù giờ đây bàn làm việc đã kết nối. Điều này là do JDBC không nói với máy chủ rằng nó có thể thực hiện TLSv1.2 mặc dù nó hoàn toàn có thể (quyết định kỳ lạ, điều đó), vì vậy máy chủ sẽ không bao giờ cố gắng gửi một cái bắt tay 1.2 ngay cả khi có thể.

Để yêu cầu JDBC thực sự sử dụng TLSv1.2, bạn phải nối nó vào chuỗi kết nối:

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

Bây giờ mọi thứ kết nối.

Tôi rất muốn làm cho aurora cung cấp một khóa dài hơn thay vì hạ thấp tính bảo mật của Ubuntu, nhưng dường như không có cách nào. Nếu có ai biết về một, xin vui lòng cho tôi biết.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.