SSL을 사용하여 Amazon RDS의 MariaDB에 루비 Datamapper 연결을 설정하려면 어떻게해야합니까?Amazon RDS의 MariaDB에 SSL을 통한 Ruby Datamapper 연결
가 여기에 내가했던 일이야 : 함께 테스트 할 때
비 SSL 연결은 작동 다음 MySQL datamapper wiki에 따르면
uri = 'mysql://user:[email protected]:port/db_name'
connection = DataObjects::Connection.new(uri)
=> #<DataObjects::Mysql::Connection:0x000056179a3a5921
connection.secure?
=> false
, SSL 연결에는 다음 옵션이 필요합니다 :ssl_ca, :client_key, and :client_cert
.
이 다음 코드 초래 :
uri = 'mysql://user:[email protected]:port/db_name?'
ssl_opts = 'ssl[ssl_ca]=file&ssl[client_key]=file&ssl[client_cert]=file'
connection = DataObjects::Connection.new(uri + ssl_opts)
connection.secure?
=> false
유일한 파일을 얻을 그러나
내가 전혀 client_cert이없는 RDS docs에서 대해 참조는 RDS combind CA bundle입니다.
문서에서mysql --ssl -h host -u user -p pass db_name
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 1638
Server version: 10.1.26-MariaDB MariaDB Server
감사합니다. 이 위키 섹션은 옵션에 대해 분명합니다. 아쉽게도'ssl [ca_cert] = path_to_cert' uri를 사용하여 작동하지 않습니다. ': ssl => {: ca_cert => '/path/to/rds-combined-ca-bundle.pem'}'옵션과 함께'DataMapper.setup'을 사용하면 작동합니다 – stmllr
잠시 동안 디버깅 한 후 나는 그 이유가'Addressable :: Uri'의 한계라고 결론을 내렸다. 그것은 하나 이상의 수준으로 해시를 나타내는 것을 목표로하는 쿼리 문자열을 처리 할 수없는 것 같습니다. 나는 그것을 양방향으로 연속적으로 사용하여 테스트했다 : 1. 해시로부터 쿼리 문자열을 생성한다. 2. 결과를 사용하여 해시를 다시 만듭니다. 결과는'{ "ssl"=> {: ca_cert => "/ path/to/cert"대신 {{ "ssl"=> "{: ca_cert => \"/ 경로/"}}' – stmllr