Ruby Datamapper 通过 SSL 连接到 Amazon RDS 上的 MariaDB
Ruby Datamapper connection with SSL to MariaDB on Amazon RDS
如何使用 SSL 与 Amazon RDS 上的 MariaDB 建立 ruby Datamapper 连接?
这是我所做的:
非 SSL 连接在测试时有效:
uri = 'mysql://user:pass@host:port/db_name'
connection = DataObjects::Connection.new(uri)
=> #<DataObjects::Mysql::Connection:0x000056179a3a5921
connection.secure?
=> false
根据 MySQL datamapper wiki,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 combind CA bundle, refered from the RDS docs
我根本没有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
在文档中
https://github.com/datamapper/do/wiki/MySQL
它还说
仅经过测试 ca_cert 才能连接到 RDS。
所以尝试只添加 ca_cert 路径并进行测试
只需要一个参数::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'
}
)
如何使用 SSL 与 Amazon RDS 上的 MariaDB 建立 ruby Datamapper 连接?
这是我所做的:
非 SSL 连接在测试时有效:
uri = 'mysql://user:pass@host:port/db_name'
connection = DataObjects::Connection.new(uri)
=> #<DataObjects::Mysql::Connection:0x000056179a3a5921
connection.secure?
=> false
根据 MySQL datamapper wiki,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 combind CA bundle, refered from the RDS docs
我根本没有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
在文档中
https://github.com/datamapper/do/wiki/MySQL
它还说
仅经过测试 ca_cert 才能连接到 RDS。
所以尝试只添加 ca_cert 路径并进行测试
只需要一个参数::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'
}
)