2016-10-31 2 views
0

У нас есть экземпляр Windows EC2, на котором мы запускаем пользовательское приложение командной строки (консольное приложение C# с использованием NpgSQL) для подключения к экземпляру RDS PostgreSQL. На основании инструкции здесь:Как подключиться к экземпляру AWS PostgreSQL RDS с использованием SSL и параметра sslrootcert из среды Windows?

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.SSL

мы создали новую группу параметров DB с rds.force_ssl set для 1 и перезагружается наш экземпляр RDS. Мы также загрузили и импортировали в Windows файл pem, указанный на странице.

Мне удалось подключиться к экземпляру RDS из моего экземпляра Windows EC2 через pgAdmin, указав SSL mode as Verify-Full. Наше приложение командной строки, считывает строки подключения из файла, и они выглядят, как это теперь, когда я добавил параметр sslmode:

Server=OurInstanceAddress;Port=5432;SearchPath='$user,public,topology';Database=OurDatabase;User Id=username;Password=mypassword;sslmode=verify-full; 

С помощью этой строки соединения не удались с ошибкой ссылочной в нижней части страницы:

FATAL: no pg_hba.conf entry for host "host.ip", user "someuser", database "postgres", SSL off 

Я попытался добавить параметр sslrootcert, но не уверен, правильно ли я имею дело с ним. Я попытался использовать пример (sslrootcert = rds-ssl-ca-cert.pem), и я попытался использовать имя загружаемого pem. Я чувствую, что есть кое-что о информации о пути, которую я передаю параметру sslrootcert, который не прав, особенно в среде Windows. Я пытался использовать имя, я пытался использовать следующие пути:

- sslrootcert=C:\keys\rds-combined-ca-bundle.pem - single backslash 
- sslrootcert=C:\\\keys\\\rds-combined-ca-bundle.pem - double backslash 
- sslrootcert=C:/keys/rds-combined-ca-bundle.pem - Linux style backslash 

Все эти производства ту же ошибку, упомянутых выше.

Любое понимание будет оценено по достоинству.

+0

Поскольку я использую Npgsql, я попробовал свою строку подключения с SSL = true; SslMode = Require; вместо sslmode = verify-full, и я все равно получил ту же ошибку. – TortillaCurtain

ответ

0

Я решил ее с помощью переменных окружения, а не для specifiying CERT путей в связи URL

-DPGSSLROOTCERT=/certs/root.crt 
-DPGSSLKEY=/certs/amazon-postgresql.key 
-PGSSLCERT=/certs/amazon-postgresql.crt 

Хотя я в Cygwin. Есть несколько советов в документации при использовании окон здесь https://www.postgresql.org/docs/9.0/static/libpq-ssl.html

Смежные вопросы