1. 程式人生 > 資料庫 >編譯安裝Postgresql 10並配置SSL以及.pgpass免密登陸,並設定埠號5666

編譯安裝Postgresql 10並配置SSL以及.pgpass免密登陸,並設定埠號5666

  1. 配置本地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

編譯安裝Postgresql 10並配置SSL以及.pgpass免密登陸,並設定埠號5666

         5.3 安全機制檢查 psql "host=`hostname` user=postgres dbname=postgres password=1qaz@WSX sslmode=require" -c "SELECT ssl_is_used();" 

       select ssl_is_used();

編譯安裝Postgresql 10並配置SSL以及.pgpass免密登陸,並設定埠號5666

參考文件

        https://my.oschina.net/tianbing/blog/744826