2017-12-06 12 views
0

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 

답변

0

수행 :ssl => {:ca_cert => 'pem_file'}합니다.

그러나 구성에 uri 문자열을 사용하는 것처럼 보이지 않습니다. 이유는 Addressable :: Uri의 제한 사항입니다. 1 레벨 이상의 해시를 나타내는 쿼리 문자열은 처리 할 수 ​​없습니다.

좋은 소식

그것이 설정 해시와 DataMapper.setup를 사용하여 작동한다는 것입니다 :

DataMapper.setup(:default, 
    :adapter => 'mysql', 
    :user  => 'user', 
    :database => 'db_name', 
    :host  => 'host', 
    :password => 'pass', 
    :ssl => { 
     :ca_cert => '/path/to/rds-combined-ca-bundle.pem' 
    } 
) 
0

https://github.com/datamapper/do/wiki/MySQL

또한

  • 테스트에만 ca_cert이에 요구되었다로 말한다 : CLI에 MySQL의 클라이언트와 연결

    는 SSL과 함께 작동 RDS에 연결하십시오.

그래서에만 ca_cert 경로를 추가하는 시도 및 테스트에 필요한 하나의 매개 변수 만있다

+0

감사합니다. 이 위키 섹션은 옵션에 대해 분명합니다. 아쉽게도'ssl [ca_cert] = path_to_cert' uri를 사용하여 작동하지 않습니다. ': ssl => {: ca_cert => '/path/to/rds-combined-ca-bundle.pem'}'옵션과 함께'DataMapper.setup'을 사용하면 작동합니다 – stmllr

+0

잠시 동안 디버깅 한 후 나는 그 이유가'Addressable :: Uri'의 한계라고 결론을 내렸다. 그것은 하나 이상의 수준으로 해시를 나타내는 것을 목표로하는 쿼리 문자열을 처리 할 수없는 것 같습니다. 나는 그것을 양방향으로 연속적으로 사용하여 테스트했다 : 1. 해시로부터 쿼리 문자열을 생성한다. 2. 결과를 사용하여 해시를 다시 만듭니다. 결과는'{ "ssl"=> {: ca_cert => "/ path/to/cert"대신 {{ "ssl"=> "{: ca_cert => \"/ 경로/"}}' – stmllr