AWS недавно объявила о необходимости:
Обновите сертификаты Amazon RDS SSL / TLS до 31 октября 2019 года.
У меня есть приложение Rails, размещенное с классическим балансировщиком нагрузки Elastic Beanstalk, которое подключается к Postgres DB с помощью RDS.
Согласно Amazon, необходимо выполнить следующие действия:
- Загрузите новый сертификат SSL / TLS из раздела Использование SSL / TLS для шифрования соединения с экземпляром БД.
- Обновите приложения базы данных, чтобы использовать новый сертификат SSL / TLS.
- Измените экземпляр DB, чтобы изменить CA от rds-ca-2015 до rds-ca-2019.
( https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html )
Поскольку мои балансировщики нагрузки настроены следующим образом (подключение к моим экземплярам EC2 через HTTP-порт 80 (не SSL), значит ли это, что мне не нужно выполнять шаги 1 и 2? И только следовать шагу 3?
Или мне нужно загрузить обновленные сертификаты и вручную установить / добавить их в мои экземпляры балансировщика нагрузки или EC? Не уверен, как это сделать.
.ebextensions
. В конце концов , после тестирования, я мог бы подтвердить , что они так и автоматически доверять новое подключение RDS. Если экземпляр RDS DB был отделен от среды EB, как описано здесьhttps://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.RDS.html
, то я не уверен в результате.Ответы:
Шаг 1 и 2 требуется только в том случае, если соединение вашего приложения с MySQL зашифровано TLS .
Не изменяйте настройки LB TLS, это может нарушить работу вашего приложения, LB TLS - это нечто другое, где RDS TLS - это нечто другое.
Если ваше приложение просто создает простое соединение, вы можете выполнить непосредственно шаг 3.
Обычно для БД, БД должна быть в частной подсети, и она не должна быть доступна из общего доступа, TLS полезен, когда ваше соединение с БД и Бэкэнд находится в Интернете, а не в VPC.
источник
eb ssh
подключаюсь к своему серверу, подключаюсь к БД черезpsql
и запускаюselect ssl_is_used()
, он возвращает true! Мой экземпляр RDS привязан к моей среде EB, как описано здесь docs.aws.amazon.com/elasticbeanstalk/latest/dg/… . Поскольку EB автоматически подключается к RDS, я обеспокоен тем, что изменение CA нарушит сгенерированное соединение.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();
database.yml
которой он обращается к переменным ENV, напримерRDS_DB_NAME
,RDS_USERNAME
и т. Д. Он не указывает, требуется ли там SSL (даже если это возможно). Хотя я думаю , что по умолчанию на EB должно быть что - то вродеallow
,prefer
илиrequire
, сконфигурированный с помощью переменной окружения или что - то. cf: postgresql.org/docs/current/… . Это определенно не один из трех других, потомуdisable
что он отключил бы SSL, и другиеverify
опции потерпели неудачу, когда я протестировал их на CLI.Существует гораздо более простой ответ на вопрос:
Просто следуйте пункту 3 и игнорируйте 1 и 2.
(Да, я написал этот ответ сам).
источник