SSLを使用してAmazonRDS上のMariaDBへのrubyDatamapper接続を確立するにはどうすればよいですか?
これが私がしたことです:
非SSL接続は、次のテストで機能します。
uri = 'mysql://user:pass@host:port/db_name'
connection = DataObjects::Connection.new(uri)
=> #<DataObjects::Mysql::Connection:0x000056179a3a5921
connection.secure?
=> false
MySQLデータマッパーウィキによると、SSL接続には次のオプションが必要です:ssl_ca, :client_key, and :client_cert
。
これにより、次のコードが生成されます。
uri = 'mysql://user:pass@host: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
ただし、取得するファイルは、RDSドキュメントから参照されるRDSコンバインドCAバンドルのみです。
client_certをまったく持っていません。
CLIでのmysqlクライアントとの接続はSSLで機能します。
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
必要なパラメータは1つだけです::ssl => {:ca_cert => 'pem_file'}
。
ただし、構成にuri文字列を使用しても機能しないようです。その理由は、Addressable :: Uriの制限です。複数のレベルのハッシュを表すことを目的としたクエリ文字列は処理できません。
良いニュースは、構成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'
}
)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加