CentOS 7
Sponsored Link

PostgreSQL 9.6 : SSL/TLS の設定
2017/10/31
 
PostgreSQL で SSL/TLS による暗号化通信の設定を有効にします。
[1]
[2] 作成した証明書をコピーして SSL/TLS の設定をします。
[root@www ~]#
cp /etc/pki/tls/certs/server.key \
/etc/pki/tls/certs/server.crt \
/etc/pki/tls/certs/ca-bundle.crt \
/var/opt/rh/rh-postgresql96/lib/pgsql/data/

[root@www ~]#
chown postgres. /var/opt/rh/rh-postgresql96/lib/pgsql/data/*.{crt,key}

[root@www ~]#
vi /var/opt/rh/rh-postgresql96/lib/pgsql/data/postgresql.conf
# 79行目:コメント解除して変更

ssl =
on
# 84行目:コメント解除して変更

ssl_cert_file = '
server.crt
'
ssl_key_file = '
server.key
'
ssl_ca_file = '
ca-bundle.crt
'
[root@www ~]#
vi /var/opt/rh/rh-postgresql96/lib/pgsql/data/pg_hba.conf
# 80行目:下記のように変更

# ローカルホストからの認証済みユーザー以外からの接続は全てSSL/TLS接続とする

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
#host    all             all             127.0.0.1/32            ident
hostssl all             all             127.0.0.1/32            md5
hostssl all             all             10.0.0.0/24             md5
hostssl all             all             ::1/128                 md5

[root@www ~]#
systemctl restart rh-postgresql96-postgresql

[root@www ~]#
su - postgres

-bash-4.2$
psql -l

                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres    +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres    +
           |          |          |             |             | postgres=CTc/postgres
 testdb    | cent     | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)

# 接続確認

# ローカルホストからの認証済み接続は通常通り

[cent@www ~]$
psql testdb

psql (9.6.5)
Type "help" for help.

testdb=>

# 上記以外の場合は SSL/TLS 接続

[cent@www ~]$
psql "user=cent host=localhost dbname=testdb"

Password:
psql (9.6.5)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

testdb=>

# 他ホストからの接続も SSL/TLS 接続

[cent@node01 ~]$
psql "host=www.srv.world dbname=testdb"

Password:
psql (9.6.5)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

testdb=>
 
Tweet