web-dev-qa-db-ja.com

WindowsクライアントからAWS RDS PostgresqlインスタンスへのSSL接続

安全なSSL接続を使用してAWS RDSでホストされているPGインスタンスに接続しようとしています。接続に自動的に適用されるように、公開鍵をWindowsのどこに保存しますか?

PGAdminを開くと、.crtファイルと.keyファイルしか指定できないことに注意してください。 .pemファイルを指す方法はありますか?

ここで参照されている公開キーをダウンロードしました: http://docs.aws.Amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.SSL

Linuxでは、このキーをデフォルトのOpenSSLディレクトリに配置するだけの簡単な問題であり、postgresがそれを検出して残りの部分を処理するようです。

Windowsでは、これを行う方法や.pemファイルを保存する場所、PGAdminが.pemファイルをポイントする方法を理解していません。

5
ChristopherTull

答えを見つけた!接続がずっと暗号化されていることがわかりました、私はそれを理解していませんでした。少年は私を愚かに感じさせた。念のため、Wiresharkをダウンロードしてパケットを盗聴しました。

これはssl-modeの「require」に当てはまりますが、ssl-modeの「verify-full」を使用するには、まだルート証明書が必要です。この場合、私はrds-combined-ca-bundle.pemを取り、.pemから.crtに名前を変更しました。これにより、PGAdminの接続プロパティウィンドウの[SSL]タブからファイルを指定できるようになりました。

これを行うと、ssl-mode "verify-full"を指定してインスタンスに接続することができました。

編集:

デフォルトでは、RDS Postgresは非SSL接続を受け入れます。 PGAdminがデフォルトでSSL接続を開始していたのは偶然です。

... sslモードを提供しない場合、postgresはデフォルトモードで 'prefer'として接続します(上記のドキュメントを参照してください)。これによれば、ssl接続が優先されますが、利用できない場合は、非SSL接続も同様です。 ソース

常にSSLを使用していることを確認するには、パラメーターrds.force_sslを1(オン)に設定します。 詳細

1
ChristopherTull

PGAdminを使用している場合、新しい接続を作成すると、SSL [1]というタブがあります。そこで、pemファイルを入力できます。

psqlを使用している場合は、pemfileを%APPDATA%\postgresql\ディレクトリ。詳細はドキュメント[2]をご覧ください。

それが役に立てば幸い。

参照:

  1. https://www.pgadmin.org/docs/dev/connect.html?highlight=ssl
  2. https://www.postgresql.org/docs/9.2/static/libpq-ssl.html
2