Cập nhật Chứng chỉ SSL / TLS của Amazon RDS - Bean Beanalk


14

AWS gần đây đã công bố sự cần thiết phải:

Cập nhật Chứng chỉ SSL / TLS Amazon RDS của bạn trước ngày 31 tháng 10 năm 2019

Tôi có một ứng dụng Rails được lưu trữ với bộ cân bằng tải đàn hồi cổ điển, kết nối với DB Postgres bằng RDS.

Các bước cần thiết theo Amazon là:

  1. Tải xuống chứng chỉ SSL / TLS mới từ Sử dụng SSL / TLS để mã hóa kết nối đến trường hợp DB.
  2. Cập nhật các ứng dụng cơ sở dữ liệu của bạn để sử dụng chứng chỉ SSL / TLS mới.
  3. Sửa đổi phiên bản DB để thay đổi CA từ rds-ca-2015 thành rds-ca-2019.

( https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certert-rotation.html )

Vì tôi có các bộ cân bằng tải của mình được thiết lập như thế này (kết nối với các phiên bản EC2 của tôi qua cổng HTTP 80 (không phải SSL), điều này có nghĩa là tôi không cần phải làm theo bước 1 và 2? Và chỉ làm theo bước 3?

LoadBalancerListener

Hoặc tôi phải tải xuống các chứng chỉ đã cập nhật và cài đặt / thêm chúng vào các phiên bản Cân bằng tải hoặc EC của mình theo cách thủ công? Không chắc chắn làm thế nào để làm điều đó.


1
cuối cùng bạn đã làm gì Tôi không rõ giải pháp cuối cùng là gì.
weber

3
@weber, điều chính tôi cần xác định là liệu các trường hợp EC2 đằng sau bộ cân bằng tải đàn hồi có kết nối RDS có tự động tin cậy chứng chỉ nâng cấp 2019 hay không. Tôi không chắc chắn liệu mình có cần tin tưởng họ một cách thủ công thông qua SSH hay không, ví dụ như sử dụng .ebextensions. Cuối cùng, sau khi thử nghiệm nó, tôi có thể xác nhận rằng họ đã tự động tin tưởng vào kết nối RDS mới. Nếu phiên bản RDS DB được tách rời khỏi môi trường EB như được mô tả ở đây https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.RDS.html, thì tôi không chắc chắn về kết quả.
stwr667

Câu trả lời:


8

Bước 1 & 2 chỉ bắt buộc nếu kết nối ứng dụng của bạn với MySQL được mã hóa TLS .

Không thay đổi cài đặt LB TLS, nó có thể phá vỡ ứng dụng của bạn, LB TLS là một thứ khác, trong đó RDS TLS là một thứ khác.

Nếu ứng dụng của bạn chỉ cần tạo kết nối đơn giản, bạn có thể thực hiện trực tiếp bước 3.

Sửa đổi phiên bản DB để thay đổi CA từ rds-ca-2015 thành rds-ca-2019.

Thông thường thực hành cho DB, DB phải ở trong mạng con riêng tư và nó không thể truy cập được từ cộng đồng, TLS rất hữu ích khi kết nối Cơ sở dữ liệu và Cuối cùng của bạn trên internet, không phải trong VPC.

Với kết nối không được mã hóa giữa máy khách MySQL và máy chủ, ai đó có quyền truy cập vào mạng có thể xem tất cả lưu lượng truy cập của bạn và kiểm tra dữ liệu được gửi hoặc nhận giữa máy khách và máy chủ.


Cảm ơn @Adiii. Bạn có chắc không? Ở đây docs.aws.amazon.com/AmazonRDS/latest/UserGuide/, nó mô tả cách xem kết nối DB của bạn có đang sử dụng SSL không. Khi tôi eb sshđến máy chủ của mình, kết nối từ đó đến DB thông qua psql, rồi chạy select ssl_is_used(), nó sẽ trả về đúng! Ví dụ RDS của tôi được gắn với môi trường EB của tôi như được mô tả ở đây docs.aws.amazon.com/elasticbeanstalk/latest/dg/ ,. Vì EB được kết nối tự động với RDS, tôi lo ngại dựa trên việc thay đổi CA sẽ phá vỡ kết nối được tạo.
stwr667

Tôi đang nói chung, nó phụ thuộc vào ứng dụng cách nó tạo kết nối nhưng mã được đề xuất bởi liên kết nó kết nối palin. var mysql = require('mysql'); var connection = mysql.createConnection({ host : process.env.RDS_HOSTNAME, user : process.env.RDS_USERNAME, password : process.env.RDS_PASSWORD, port : process.env.RDS_PORT }); connection.connect(function(err) { if (err) { console.error('Database connection failed: ' + err.stack); return; } console.log('Connected to database.'); }); connection.end();
Adiii

2
Cảm ơn @Adii. Fyi Tôi sử dụng Postgres, không phải MySQL. Tin vui là tôi đã chụp nhanh và vừa mới thử bước 3. Mọi thứ vẫn hoạt động như mong đợi. Ngay cả khi kết nối lại với DB từ máy chủ ứng dụng, nó vẫn báo cáo rằng nó đang sử dụng SSL, vì vậy tôi giả sử ElasticBeanstalk tự động xử lý tin cậy chứng chỉ khi đối tượng RDS được gắn với môi trường EB. Cảm ơn một lần nữa.
stwr667

Vậy làm thế nào để bạn tạo kết nối? Đã chỉ định SSL trong chuỗi kết nối?
Adiii

Tôi có một ứng dụng Rails, vì vậy thông tin kết nối được xác định trong database.ymlđó gọi ra các biến ENV như RDS_DB_NAME, RDS_USERNAMEv.v. Nó không chỉ định yêu cầu SSL ở đó (mặc dù có thể). Mặc dù tôi nghĩ rằng các thiết lập mặc định trên EB phải cái gì đó như allow, preferhoặc require, cấu hình thông qua một biến môi trường hoặc một cái gì đó. cf: postgresql.org/docs/c Hiện / . Đây chắc chắn không phải là một trong 3 cái còn lại vì disablesẽ tắt SSL và các verifytùy chọn khác không thành công khi tôi thử nghiệm chúng trên CLI.
stwr667

2

Có một câu trả lời dễ dàng hơn cho câu hỏi:

Bạn không cần phải cài đặt bất cứ thứ gì trong môi trường Beanstalk nếu bạn nâng cấp Chứng chỉ CA được sử dụng bởi RDS được đính kèm. https://stackoverflow.com/a/59742149/7051819

Chỉ cần làm theo điểm 3 và bỏ qua 1 và 2.

(Có, tôi đã tự viết câu trả lời đó).


3
Tôi nghĩ rằng câu trả lời nhảy bị bỏ phiếu vì hầu hết các môi trường sản xuất KHÔNG sử dụng RDS trong cây đậu co giãn. sử dụng RDS từ bên trong beanstalk đàn hồi có khả năng gây nguy hiểm vì nếu bạn chấm dứt trường hợp beanstalk đàn hồi của bạn, cơ sở dữ liệu của bạn cũng bị chấm dứt, điều này không tốt cho mục đích lưu giữ dữ liệu. Vì vậy, nói chung mọi người đang hỏi về môi trường cây đậu đàn hồi trong đó cá thể RDS là riêng biệt.
jakeatwork
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.