編譯安裝Postgresql 10並配置SSL以及.pgpass免密登陸,並設定埠號5666
阿新 • • 發佈:2021-01-04
-
配置本地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(參考連結文件)
在家目錄下執行以下內容
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