設(shè)置CA證書來(lái)強(qiáng)化PostgreSQL的安全性的教程
在經(jīng)歷了多次的摸索實(shí)驗(yàn)后我終于成功地實(shí)現(xiàn)了SSL證書認(rèn)證的功能,因此我想這次我要把這些步驟記錄下來(lái)供日后查閱。
出于安全和方便的原因,我要在一臺(tái)單獨(dú)的專用機(jī)器上簽署客戶的證書,這臺(tái)機(jī)器也稱為 證書授證中心(CA)。
這讓我們?cè)谑跈?quán)新的客戶端時(shí)不必先登錄到PostgreSQL服務(wù)器然后再簽署證書或者修改pg_hba.conf。
我們要?jiǎng)?chuàng)建一個(gè)特殊的數(shù)據(jù)庫(kù)組,叫sslcertusers。這個(gè)組里的所有用戶都可以通過由CA簽署的證書進(jìn)行連接。
在下面的例子中,請(qǐng)將"trustly"替換成你的公司名或組織名。所有的命令都是基于Ubuntu Linux 12.04 LTS。
設(shè)置CA
CA應(yīng)該是一臺(tái)離線的處于高度安全環(huán)境中的計(jì)算機(jī)。
生成CA私鑰
sudo openssl genrsa -des3 -out /etc/ssl/private/trustly-ca.key 2048 sudo chown root:ssl-cert /etc/ssl/private/trustly-ca.key sudo chmod 640 /etc/ssl/private/trustly-ca.key
生成CA證書
sudo openssl req -new -x509 -days 3650 \ -subj '/C=SE/ST=Stockholm/L=Stockholm/O=Trustly/CN=trustly' \ -key /etc/ssl/private/trustly-ca.key \ -out /usr/local/share/ca-certificates/trustly-ca.crt sudo update-ca-certificates
配置PostgreSQL服務(wù)器
生成PostgreSQL服務(wù)器私鑰
# Remove default snakeoil certs sudo rm /var/lib/postgresql/9.1/main/server.key sudo rm /var/lib/postgresql/9.1/main/server.crt # Enter a passphrase sudo -u postgres openssl genrsa -des3 -out /var/lib/postgresql/9.1/main/server.key 2048 # Remove the passphrase sudo -u postgres openssl rsa -in /var/lib/postgresql/9.1/main/server.key -out /var/lib/postgresql/9.1/main/server.key sudo -u postgres chmod 400 /var/lib/postgresql/9.1/main/server.key
生成PostgreSQL服務(wù)器證書簽署請(qǐng)求(CSR)
sudo -u postgres openssl req -new -nodes -key /var/lib/postgresql/9.1/main/server.key -days 3650 -out /tmp/server.csr -subj '/C=SE/ST=Stockholm/L=Stockholm/O=Trustly/CN=postgres'
用CA私鑰簽署PostgreSQL服務(wù)器證書請(qǐng)求
sudo openssl req -x509 \ -key /etc/ssl/private/trustly-ca.key \ -in /tmp/server.csr \ -out /var/lib/postgresql/9.1/main/server.crt sudo chown postgres:postgres /var/lib/postgresql/9.1/main/server.crt
創(chuàng)建根(root)證書=PostgreSQL服務(wù)器證書+CA證書
sudo -u postgres sh -c 'cat /var/lib/postgresql/9.1/main/server.crt /etc/ssl/certs/trustly-ca.pem > /var/lib/postgresql/9.1/main/root.crt' sudo cp /var/lib/postgresql/9.1/main/root.crt /usr/local/share/ca-certificates/trustly-postgresql.crt sudo update-ca-certificates
授權(quán)訪問
CREATE GROUP sslcertusers; ALTER GROUP sslcertusers ADD USER joel; # /etc/postgresql/9.1/main/pg_hba.conf: hostssl nameofdatabase +sslcertusers 192.168.1.0/24 cert clientcert=1
重啟PostgreSQL
sudo service postgresql restart
PostgreSQL客戶端設(shè)置
從PostgreSQL服務(wù)器上復(fù)制根證書
mkdir ~/.postgresql cp /etc/ssl/certs/trustly-postgresql.pem ~/.postgresql/root.crt
生成PostgreSQL客戶端私鑰
openssl genrsa -des3 -out ~/.postgresql/postgresql.key 1024 # If this is a server, remove the passphrase: openssl rsa -in ~/.postgresql/postgresql.key -out ~/.postgresql/postgresql.key
生成PostgreSQL客戶端證書簽署請(qǐng)求并簽署
# Replace "joel" with username: openssl req -new -key ~/.postgresql/postgresql.key -out ~/.postgresql/postgresql.csr -subj '/C=SE/ST=Stockholm/L=Stockholm/O=Trustly/CN=joel' sudo openssl x509 -req -in ~/.postgresql/postgresql.csr -CA /etc/ssl/certs/trustly-ca.pem -CAkey /etc/ssl/private/trustly-ca.key -out ~/.postgresql/postgresql.crt -CAcreateserial sudo chown joel:joel -R ~/.postgresql sudo chmod 400 -R ~/.postgresql/postgresql.key
相關(guān)文章
DBeaver一款替代Navicat的數(shù)據(jù)庫(kù)可視化工具
這篇文章主要介紹了DBeaver一款替代Navicat的數(shù)據(jù)庫(kù)可視化工具,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11如何使用navicat遠(yuǎn)程連接openGauss
公司要在openEuler系統(tǒng)中安裝openGauss數(shù)據(jù)庫(kù),經(jīng)過幾天的查資料,終于是安裝成功了,并且能在navicat中遠(yuǎn)程連接使用,本文給大家介紹如何使用navicat遠(yuǎn)程連接openGauss,感興趣的朋友跟隨小編一起看看吧2023-10-10大數(shù)據(jù)量時(shí)提高分頁(yè)的效率
當(dāng)我們?cè)谔幚泶罅繑?shù)據(jù)的時(shí)候,就需要注意分頁(yè)的效率問題了,下面大家可以看看2009-03-03Navicat運(yùn)行sql文件導(dǎo)入數(shù)據(jù)不全或?qū)胧〉慕鉀Q方案
最近導(dǎo)出數(shù)據(jù)庫(kù)到另一個(gè)服務(wù)器,遇到這個(gè)問題,下面這篇文章主要給大家介紹了關(guān)于Navicat運(yùn)行sql文件導(dǎo)入數(shù)據(jù)不全或?qū)胧〉慕鉀Q方案,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03談?wù)剶?shù)據(jù)庫(kù)的字段設(shè)計(jì)的幾個(gè)心得
今天小編就為大家分享一篇關(guān)于談?wù)剶?shù)據(jù)庫(kù)的字段設(shè)計(jì)的幾個(gè)心得,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03SQL中where子句與having子句的區(qū)別小結(jié)
這篇文章主要給大家介紹了關(guān)于SQL中where子句與having子句的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12關(guān)于數(shù)據(jù)庫(kù)性能優(yōu)化中的表結(jié)構(gòu)優(yōu)化
這篇文章主要介紹了關(guān)于數(shù)據(jù)庫(kù)性能優(yōu)化中的表結(jié)構(gòu)優(yōu)化,合理的表結(jié)構(gòu)設(shè)計(jì)可以提高數(shù)據(jù)庫(kù)的查詢效率和性能,而不合理的表結(jié)構(gòu)設(shè)計(jì)則可能導(dǎo)致查詢效率低下、數(shù)據(jù)冗余、數(shù)據(jù)不一致等問題,需要的朋友可以參考下2023-07-07