programing

Embarcadero FireDAC로 AWS RDS에서 호스팅되는 MariaDB에서 SSL을 설정하는 방법

padding 2023. 11. 4. 10:18
반응형

Embarcadero FireDAC로 AWS RDS에서 호스팅되는 MariaDB에서 SSL을 설정하는 방법

SSL을 통해 AWS RDS에서 호스팅되는 MariaDB 인스턴스에 연결하려고 합니다.

문서 찾기: http://docwiki.embarcadero.com/RADStudio/Rio/en/Connect_to_MySQL_Server_(FireDAC)

네 개의 파라미터를 설정해야 할 것 같습니다.

UseSSL=True
SSL_ca=ca-cert.pem
SSL_cert=client-cert.pem
SSL_key=client-key.pem

아마존은 제게 rds-combined-ca-bundle만 줍니다.

저는 TLS/SSL에 대해 잘 모릅니다. 그 .pem 파일을 생성해야 합니까?만약 그렇다면, 어떻게?

저도 그렇게 하려고 했습니다.

            db_params->Add("DriverID=MySQL");
            db_params->Add("Server=my.rds.url.com");
            db_params->Add("Port=9999");
            db_params->Add("Database=my_database");
            db_params->Add("User_Name=my_user");
            db_params->Add("Password=my_password");
            db_params->Add("UseSSL=True");
            db_params->Add("SSL_ca=absolute\\path\\to\\rds-combined-ca-bundle.pem");

하지만 그것은 예외를 제기합니다.

[FireDAC][Phys][MySQL] SSL connection error

사용자와 암호가 없으면 같은 것...

미리 감사드립니다!

파티에 늦었지만 다른 사람이 필요할 수도 있습니다.

1. 서버

먼저 사용자가 인증 시 SSL/TLS 암호화를 사용하는지 확인해야 합니다.MySQL 콘솔에서 다음 SQL 문을 실행합니다.

SHOW GRANTS FOR 'my_user';
+---------------------------------------------------------------------------------------------+
| Grants for my_user@%                                                                        |
+---------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, ... ON *.* TO `my_user`@`%` IDENTIFIED BY PASSWORD '*...' REQUIRE SSL |
+---------------------------------------------------------------------------------------------+

결과가 포함되지 않는 경우REQUIRE SSL, 사용자에게 SSL/TLS를 사용하도록 설정해야 합니다.

ALTER USER 'my_user' REQUIRE SSL;
FLUSH PRIVILEGES;

Run theSHOW GRANTS사용자가 현재 SSL/TLS를 사용하고 있음을 확인하기 위해 다시 문을 엽니다.

물론 이 모든 것을 admin/root에서 실행해야 합니다. 그렇지 않으면 권한을 부여할 수 없습니다.

2. 인증서를

그런 다음 RDS 인스턴스의 위치에 따라 적절한 인증서를 다운로드해야 합니다(예:US East (오하이오) -> us-east-2-bundle.pem).선택한 경로에 .pem을 저장합니다.실행 파일(예: '.Cert')에 대한 상대 경로로 저장했습니다.

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html 에서 인증서를 다운로드할 수 있습니다.

3. 코드를

대부분 맞습니다만 일관성을 위해 모든 연결을 처음부터 다시 설정하겠습니다.이건 파스칼 코드지만 요점을 알 수 있을 겁니다.

DBConnection.LoginPrompt := False;
DBConnection.ConnectedStoredUsage := [auRunTime];
DBConnection.ConnectionName := 'my_db_connection';
DBConnection.ResourceOptions.AutoConnect := False;
DBConnection.Params.DriverID := 'MySQL';
DBConnection.Params.Database := 'my_database';
DBConnection.Params.UserName := 'my_user';
DBConnection.Params.Password := 'my_password';
DBConnection.Params.Add('Server=my.rds.url.com');
DBConnection.Params.Add('Port=9999');
DBConnection.Params.Add('LoginTimeout=15');
DBConnection.Params.Add('UseSSL=True');
DBConnection.Params.Add('SSL_capath=./Cert');
DBConnection.Params.Add('SSL_ca=./Cert/us-east-2-bundle.pem');
DBConnection.Open;

언급URL : https://stackoverflow.com/questions/56299582/how-to-setup-ssl-on-mariadb-hosted-on-aws-rds-with-embarcadero-firedac

반응형