配置本地Yum
1.1 配置local.repo
[CDROM1]
name=CDROM1
baseurl=file:///mnt/
enable=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
1.2 挂在镜像
mount /dev/cdrom /mnt/
1.3. 更行仓库
yum clean all && yum repolist all
1.4 检查openssl模块是否安装
um installed list|grep openssl
2 . 安装 SSL模块
yum -y install openssl-devel openssl readline-devel zlib-devel
3 . 基础环境
3.1 软件环境
Centos7.6+postgresql-10.14.tar.gz
3.2 磁盘目录
/home/pg10/soft 在pg10用户下安装软件目录,权限是pg10:pg10
/data01/pg10/data 初始化路径,权限是pg10:pg10
4 . 安装步骤
4.1 解压安装包
tar -xvf postgresql-10.14.tar.gz
4.2 进入目录
cd postgresql-10.14
4.3 编译,端口号是5666,软件安装路径是/home/pg10/soft
./configure --prefix=/home/pg10/soft --with-openssl --with-pgport=5666
下一步
make world -j4 && make install-world -j4
4.4 初始化数据库目录到/data01/pg10/data 并启用checksum校验
/home/pg10/soft/bin/initdb -D /data01/pg10/data -k
4.5 启动数据库
/home/pg10/soft/bin/pg_ctl start -D /data01/pg10/data -l /tmp/logfile
4.6 创建.pgpass 文件并授权0600的权限
touch ~/.pgpass
chmod 0600 ~/.pgpass
data01:5666:pg10:postgres:1qaz@WSX
4.7 配置数据库超级用户postgres
/home/pg10/soft/bin/psql -d postgres
select current_user;
select username from pg_user;
4.8 配置环境变量
vim .bashrc 添加以下内容
export PGHOME=/home/pg10/soft
export PGDATA=/data01/pg10/data
export PATH=${PGHOME}/bin:${PATH}
执行以下内容
. .bashrc 或者source .bashrc
4.8 登录数据库
psql -d postgres
4.9. 创建超级用户
create user postgres with superuser password ‘1qaz@WSX‘;
4.10 修改端口(./configure中如果没有指定的话 --with-pgport需要进行指定)
alter system set port=5666;
select pg_reload_conf();
pg_ctl -D $PGDATA reload
5 . 配置SSL(参考链接文档)
https://www.postgresql.org/docs/10/ssl-tcp.html
在家目录下执行以下内容
openssl req -new -x509 -days 365 -nodes -text -out server.crt -keyout server.key -subj "/CN=data01"
chmod og-rwx server.key
openssl req -new -nodes -text -out root.csr -keyout root.key -subj "/CN=data01"
chmod og-rwx root.key
openssl x509 -req -in root.csr -text -days 3650 -extfile /etc/pki/tls/openssl.cnf -extensions v3_ca -signkey root.key -out root.crt
openssl req -new -nodes -text -out server.csr -keyout server.key -subj "/CN=data01"
chmod og-rwx server.key
openssl x509 -req -in server.csr -text -days 365 -CA root.crt -CAkey root.key -CAcreateserial -out server.crt
注意Centos7 上ssl的 openssl.cnf跟网站上路径是不一致的,需要进行修改成/etc/pki/tls/openssl.cnf
生成
-rw-rw-r-- 1 pg10 pg10 969 Jan 3 21:06 server.crt
-rw------- 1 pg10 pg10 1704 Jan 3 21:06 server.key
然后将这两个文件放到/data01/pg10/data路径,这样后续参数就不需要修改路径了。
如果放在别的路径,例如家目录下,需要修改postgresql.conf
ssl_key_file=‘/home/pg10/server.key‘
ssl_cert_file=‘/home/pg10/server.crt‘
5.1 配置ssl支持 并创建sslinfo扩展
配置server.key server.crt文件等
启动ssl
alter system set ssl=on;
修改$PGDATA/postgresql.conf
ssl=on
注意如果cp server.key server.crt就不需要再修改以下这两个参数了。默认路径是/data01/pg10/data这个路径了。如果放在了家目录,则需要修改。
ssl_key_file=‘/home/pg10/server.key‘
ssl_cert_file=‘/home/pg10/server.crt‘
以下是直接放置到data路径后需要打开的参数
#authentication_timeout = 1min # 1s-600s
ssl = on
ssl_ciphers = ‘HIGH:MEDIUM:+3DES:!aNULL‘ # allowed SSL ciphers
ssl_prefer_server_ciphers = on
ssl_ecdh_curve = ‘prime256v1‘
ssl_cert_file = ‘server.crt‘
ssl_key_file = ‘server.key‘
配置$PGDATA/pg_hba.conf
hostssl all all 0.0.0.0/0 md5
配置完后pg_ctl reload
5.2 登陆检查,并查看
psql -U postgres -d postgres
show ssl;
show ssl_key_file;
show ssl_cert_file;
create extension sslinfo;
然后退出
pg_ctl restart -D $PGDATA -l /tmp/logfile
create extension sslinfo;
select ssl_is_used(); 需要是t
5.3 安全机制检查 psql "host=`hostname` user=postgres dbname=postgres password=1qaz@WSX sslmode=require" -c "SELECT ssl_is_used();"
select ssl_is_used();
参考文档
https://my.oschina.net/tianbing/blog/744826