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
'programing' 카테고리의 다른 글
Oracle에서 숫자 열의 정밀도 또는 축척 향상 (0) | 2023.11.04 |
---|---|
CREATE TABLE의 1064 오류...TYPE=MYISAM (0) | 2023.11.04 |
ASP에서 서버의 IP 주소를 가져오는 중입니다.NET? (0) | 2023.11.04 |
AngularJS: $scope 변수를 함수에 전달하는 시기 (0) | 2023.11.04 |
Node.js에서 새 줄에 추가하는 방법 (0) | 2023.11.04 |