我正在使用AWS处理项目,该项目托管在带有RDS PostgreSQL的EC2实例上。我想在我的服务器和数据库之间使用SSL加密,AWS RDS supports但是我无法弄清楚如何配置Laravel以使其工作。有没有办法在配置数据库连接时指定sslmode
?
答案 0 :(得分:2)
这似乎是Laravel 4中缺少的功能,但我已经提交了一个拉取请求来修复此问题。
https://github.com/laravel/framework/pull/5488(于2014-09-08合并)
要修补代码,只需将以下代码段添加到PostgresConnector.php文件中的getDsn
函数。
if (isset($config['sslmode']))
{
$dsn .= ";sslmode={$sslmode}";
}
之后,您可以在pgsql数据库配置部分指定sslmode = 'require'
,以测试Web应用程序和数据库之间的加密。 sslmode的其他可能值包括'disable'
,'allow'
,'prefer'
,'require'
,'verify-ca'
,'verify-full'
。默认值为'prefer'
。
有关详细信息,请查看PostgreSQL文档:http://www.postgresql.org/docs/9.3/static/libpq-ssl.html
答案 1 :(得分:0)
将您的Laravel配置重新设置为官方Postgresql documentation:
将config / database.php中的postgres配置更改为
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => env('DB_SSLMODE', 'prefer'), <-- CHANGE THIS
],
并将新选项添加到.env文件中:
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=mytestdb
DB_USERNAME=postgres
DB_PASSWORD=secret
DB_SSLMODE=disable <-- ADD THIS
答案 2 :(得分:0)