- - PR -
postgresql-8.1.0でのssl設定について
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2005-12-04 14:55
お世話になります、わかです。
サーバ機で動作中のpostgresql-8.1.0に クライアントからpgAdminIIIでSSLを使用して接続したいと考えています。 下記の手順を試しましたが、 pgAdminIIIからの接続時に 「Error connecting to the server: SSL error: sslv3 alert handshake failure」 と表示され接続することができません。 サーバのログには 「could not accept SSL connection: peer did not return a certificate」 と出力されます。 googleなどで検索しましたが、 未熟者のため、有用なヒントを見つけることができませんでした。 同様の事象を解決された方から、お知恵をお借りできればと思います。 ==環境== サーバ Red Hat Enterprise Linux 3 Update 6 ES (x86) postgresql-8.1.0 クライアント windows XP pro pgAdminIII 1.2.0 ====== postgresql-8.1.0のconfigオプション # ./configure ¥ --enable-syslog ¥ --with-openssl ¥ --with-includes=/usr/kerberos/include (書き込みの都合上、半角¥を全角に変換しています) postgresql-8.1.0のinitdb $ initdb -E EUC_JP --no-locale -D /usr/local/pgsql/data pg_hba.confの内容 hostssl all all ???.???.???.??? 255.255.255.255 password hostssl all all 0.0.0.0 0.0.0.0 reject host all all 0.0.0.0 0.0.0.0 reject (???.???.???.???はpgAdminIIIで接続するためのクライアントIPアドレスです) postgresql.confの内容(デフォルトからの変更点のみ) listen_addresses = '*' port = 5432 ssl = on log_destination = 'syslog' ssl関連のファイルは http://www.rccm.co.jp/~juk/pgsql/Using-SSL_on_8.0.txt を参考にしました。 不足する情報がありましたら、ご指摘いただければ幸いです。 よろしくお願いいたします。 ## 2005.12.4 14:56 動作状況について追記 sshにてサーバ機にログイン後、 postgresユーザにてpsqlコマンドを使った操作は (create user, create tablespace, create database, create tableなど) 問題なく行うことができます。 また、sslを使用しないpgAdminIIIからの操作も 問題なく行うことができます。 ## 2005.12.4 18:05 postgresql-7.4.xの場合について追記 以前にpostgresql-7.4.x において、 configオプション #./configure ¥ --enable-multibyte=EUC_JP ¥ --enable-syslog ¥ --with-java ¥ --with-openssl=/usr/local/openssl (書き込みの都合上、半角¥を全角に変換しています) のようにして、上記と同様のことを実現しておりました。 この場合、今回のようにクライアントの証明書は要求されませんでした。 postgresql-8.1.0 で、同様のconfigオプションを使うと 「checking whether to build with OpenSSL support... configure: error: no argument expected for --with-openssl option」 となり、confugureでエラーとなりました。 次に、 configオプション #./configure ¥ --enable-multibyte=EUC_JP ¥ --enable-syslog ¥ --with-java ¥ --with-openssl (書き込みの都合上、半角¥を全角に変換しています) とすると 「configure: error: header file <openssl/ssl.h> is required for OpenSSL」 となり、エラーとなりました。 [ メッセージ編集済み 編集者: わか 編集日時 2005-12-04 18:53 ] |
|
投稿日時: 2005-12-04 19:14
解決しました。
原因は /usr/local/pgsql/data/ 以下に root.crt を作成したためでした。 (root.crtはserver.crtをコピーして作っていました) /usr/local/pgsql/data/ に作成するSSL関連のファイルを下記の2つとすることで 目的の動作を実現できました。 (参考としたURLにも下記の2つしか記載がありませんでした) server.crt server.key 今回、なぜroot.crtを作成したかというと、 以前使用していたpostgres-7.4.xの環境では、root.crtが存在しても クライアント証明の要求がなかったためです。 # pgsqlメーリングリストの「pgsql-jp: 35831」にて # 私が回答した際の環境がまさにそうでした。 公式リファレンス http://www.postgresql.jp/document/pg810doc/html/ssl-tcp.html によると、 「root.crtが存在しない場合、クライアント証明は要求されませんし、検査もされません。 このモードでは、SSLは通信セキュリティを提供しますが、認証は提供しません。」 とのことですので、今回のように通信経路の暗号化のみが目的の場合、 root.crtを作成しないのが正解のようです。 どなたかのご参考になれば幸いです。 最後までお読みいただき、ありがとうございました。 |
1
