SSL証明書 · 1 min read · Dec 15, 2025
PostgreSQLのSSL証明書
PostgreSQLのSSL証明書
これは、PgAdminからクライアントマシンのPostgreSQLサーバーマシンへの暗号化接続を有効にするためのSSL証明書の設定方法を説明します。前提条件として、PostgreSQL(SSLサポートでコンパイル済み)とOpenSSLがサーバー(Linux)に既にインストールされ、機能していることが必要です。PgAdminはクライアント(WindowsまたはLinuxのいずれか)に既にインストールされています。
サーバーには、データディレクトリに3つの証明書が必要です。CentOSのデフォルトは/var/lib/pgsql/data/です:
root.crt(信頼されたルート証明書)
server.crt(サーバー証明書)
server.key(秘密鍵)
コマンドはrootとして実行します。
sudo -cd /var/lib/pgsql/data秘密鍵を生成します(パスフレーズを提供する必要があります)。
openssl genrsa -des3 -out server.key 1024パスフレーズを削除します。
openssl rsa -in server.key -out server.key秘密鍵ファイルに適切な権限と所有者を設定します。
chmod 400 server.key
chown postgres.postgres server.keyサーバー証明書を作成します。
-subjは情報の入力を促すのを避けるためのショートカットです。
-x509は証明書要求ではなく自己署名証明書を生成します。
openssl req -new -key server.key -days 3650 -out server.crt -x509 -subj '/C=CA/ST=British Columbia/L=Comox/O=TheBrain.ca/CN=thebrain.ca/[email protected]'自己署名しているため、サーバー証明書を信頼されたルート証明書として使用します。
cp server.crt root.crtpg_hba.confを編集する必要があります。例えば:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local"はUnixドメインソケット接続専用です
local all all trust
# IPv4ローカル接続:
host all all 127.0.0.1/32 trust
# 認証されたユーザーのためのIPv4リモート接続
hostssl all www-data 0.0.0.0/0 md5 clientcert=1
hostssl all postgres 0.0.0.0/0 md5 clientcert=1実際にSSLを有効にするためにpostgresql.confを編集する必要があります:
ssl = onPostgreSQLサーバーを再起動する必要があります。
/etc/init.d/postgresql restartサーバーが(再)起動に失敗した場合は、CentOSのデフォルトである/var/lib/pgsql/pgstartup.logのPostgreSQLスタートアップログを確認して理由を調べてください。
クライアントには、3つのファイルが必要です。Windowsの場合、これらのファイルは%appdata%\postgresql\ディレクトリに配置する必要があります。Linuxの場合は~/.postgresql/ディレクトリです。
root.crt(信頼されたルート証明書)
postgresql.crt(クライアント証明書)
postgresql.key(秘密鍵)
サーバーマシンで必要なファイルを生成し、それをクライアントにコピーします。必要なファイルは/tmp/ディレクトリに生成します。
まず、クライアントマシン用の秘密鍵postgresql.keyを作成し、パスフレーズを削除します。
openssl genrsa -des3 -out /tmp/postgresql.key 1024openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key次に、証明書postgresql.crtを作成します。これは、信頼されたルート(サーバーマシンの秘密鍵ファイルを使用)によって署名される必要があります。また、証明書のコモンネーム(CN)は、接続するデータベースユーザー名に設定する必要があります。
openssl req -new -key /tmp/postgresql.key -out /tmp/postgresql.csr -subj '/C=CA/ST=British Columbia/L=Comox/O=TheBrain.ca/CN=www-data'openssl x509 -req -in /tmp/postgresql.csr -CA root.crt -CAkey server.key -out /tmp/postgresql.crt -CAcreateserialサーバーの/tmp/ディレクトリからクライアントマシンに作成した3つのファイルをコピーします。
サーバーマシンからクライアントマシンに信頼されたルート証明書root.crtをコピーします(Windows pgadminの場合は%appdata%\postgresql\、Linux pgadminの場合は~/.postgresql/)。postgresql.keyのファイル権限を変更して、あなたのみにアクセスを制限します(Windowsでは、制限されたアクセスが既に継承されているため、必要ないかもしれません)。サーバーの/tmp/ディレクトリからファイルを削除します。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。