b2c網(wǎng)站建設(shè)平臺(tái)營(yíng)銷策劃公司靠譜嗎
文章目錄
- openGauss學(xué)習(xí)筆記-100 openGauss 數(shù)據(jù)庫管理-管理數(shù)據(jù)庫安全-客戶端接入之用SSL進(jìn)行安全的TCP/IP連接
- 100.1 背景信息
- 100.2 前提條件
- 100.3 注意事項(xiàng)
- 100.4 操作步驟
- 100.5 相關(guān)參考
openGauss學(xué)習(xí)筆記-100 openGauss 數(shù)據(jù)庫管理-管理數(shù)據(jù)庫安全-客戶端接入之用SSL進(jìn)行安全的TCP/IP連接
100.1 背景信息
openGauss支持SSL標(biāo)準(zhǔn)協(xié)議(TLS 1.2),SSL協(xié)議是安全性更高的協(xié)議標(biāo)準(zhǔn),它們加入了數(shù)字簽名和數(shù)字證書來實(shí)現(xiàn)客戶端和服務(wù)器的雙向身份驗(yàn)證,保證了通信雙方更加安全的數(shù)據(jù)傳輸。
100.2 前提條件
從CA認(rèn)證中心申請(qǐng)到正式的服務(wù)器、客戶端的證書和密鑰。(假設(shè)服務(wù)器的私鑰為server.key,證書為server.crt,客戶端的私鑰為client.key,證書為client.crt,CA根證書名稱為cacert.pem。)
100.3 注意事項(xiàng)
- 當(dāng)用戶遠(yuǎn)程連接到數(shù)據(jù)庫主節(jié)點(diǎn)時(shí),需要使用sha256的認(rèn)證方式。
- 當(dāng)內(nèi)部服務(wù)器之間連接時(shí),需要使用trust的認(rèn)證方式,支持IP白名單認(rèn)證。
100.4 操作步驟
openGauss在數(shù)據(jù)庫部署完成后,默認(rèn)已開啟SSL認(rèn)證模式。服務(wù)器端證書,私鑰以及根證書已經(jīng)默認(rèn)配置完成。用戶需要配置客戶端的相關(guān)參數(shù)。
配置SSL認(rèn)證相關(guān)的數(shù)字證書參數(shù),具體要求請(qǐng)參見表1。
-
配置客戶端參數(shù)。
已從CA認(rèn)證中心申請(qǐng)到客戶端默認(rèn)證書,私鑰,根證書以及私鑰密碼加密文件。假設(shè)證書、私鑰和根證書都放在“/home/omm”目錄。
雙向認(rèn)證需配置如下參數(shù):
export PGSSLCERT="/home/omm/client.crt" export PGSSLKEY="/home/omm/client.key" export PGSSLMODE="verify-ca" export PGSSLROOTCERT="/home/omm/cacert.pem"
單向認(rèn)證需要配置如下參數(shù):
export PGSSLMODE="verify-ca" export PGSSLROOTCERT="/home/omm/cacert.pem"
-
修改客戶端密鑰的權(quán)限。
客戶端根證書,密鑰,證書以及密鑰密碼加密文件的權(quán)限,需保證權(quán)限為600。如果權(quán)限不滿足要求,則客戶端無法以SSL連接到openGauss。
chmod 600 client.key chmod 600 client.crt chmod 600 client.key.cipher chmod 600 client.key.rand chmod 600 cacert.pem
須知: 從安全性考慮,建議使用雙向認(rèn)證方式。 配置客戶端環(huán)境變量,必須包含文件的絕對(duì)路徑。
表 1 認(rèn)證方式
認(rèn)證方式 | 含義 | 配置客戶端環(huán)境變量 | 維護(hù)建議 |
---|---|---|---|
雙向認(rèn)證(推薦) | 客戶端驗(yàn)證服務(wù)器證書的有效性,同時(shí)服務(wù)器端也要驗(yàn)證客戶端證書的有效性,只有認(rèn)證成功,連接才能建立。 | 設(shè)置如下環(huán)境變量:PGSSLCERTPGSSLKEYPGSSLROOTCERTPGSSLMODE | 該方式應(yīng)用于安全性要求較高的場(chǎng)景。使用此方式時(shí),建議設(shè)置客戶端的PGSSLMODE變量為verify-ca。確保了網(wǎng)絡(luò)數(shù)據(jù)的安全性。 |
單向認(rèn)證 | 客戶端只驗(yàn)證服務(wù)器證書的有效性,而服務(wù)器端不驗(yàn)證客戶端證書的有效性。服務(wù)器加載證書信息并發(fā)送給客戶端,客戶端使用根證書來驗(yàn)證服務(wù)器端證書的有效性。 | 設(shè)置如下環(huán)境變量:PGSSLROOTCERTPGSSLMODE | 為防止基于TCP鏈接的欺騙,建議使用SSL證書認(rèn)證功能。除配置客戶端根證書外,建議客戶端使用PGSSLMODE變量為verify-ca方式連接。 |
100.5 相關(guān)參考
在服務(wù)器端的postgresql.conf文件中配置相關(guān)參數(shù),詳細(xì)信息請(qǐng)參見表2。
表 2 服務(wù)器參數(shù)
參數(shù) | 描述 | 取值范圍 |
---|---|---|
ssl | 表示是否啟動(dòng)SSL功能。 | on:開啟SSL功能。off:關(guān)閉SSL功能。**默認(rèn)值:**off |
require_ssl | 設(shè)置服務(wù)器端是否強(qiáng)制要求SSL連接。該參數(shù)只有當(dāng)參數(shù)ssl為on時(shí)才有效。 | on:服務(wù)器端強(qiáng)制要求SSL連接。off:服務(wù)器端對(duì)是否通過SSL連接不作強(qiáng)制要求。**默認(rèn)值:**off |
ssl_cert_file | 指定服務(wù)器證書文件,包含服務(wù)器端的公鑰。服務(wù)器證書用以表明服務(wù)器身份的合法性,公鑰將發(fā)送給對(duì)端用來對(duì)數(shù)據(jù)進(jìn)行加密。 | 請(qǐng)以實(shí)際的證書名為準(zhǔn),其相對(duì)路徑是相對(duì)于數(shù)據(jù)目錄的。默認(rèn)值:server.crt |
ssl_key_file | 指定服務(wù)器私鑰文件,用以對(duì)公鑰加密的數(shù)據(jù)進(jìn)行解密。 | 請(qǐng)以實(shí)際的服務(wù)器私鑰名稱為準(zhǔn),其相對(duì)路徑是相對(duì)于數(shù)據(jù)目錄的。默認(rèn)值:server.key |
ssl_ca_file | CA服務(wù)器的根證書。此參數(shù)可選擇配置,需要驗(yàn)證客戶端證書的合法性時(shí)才需要配置。 | 請(qǐng)以實(shí)際的CA服務(wù)器根證書名稱為準(zhǔn)。默認(rèn)值:cacert.pem |
ssl_crl_file | 證書吊銷列表,如果客戶端證書在該列表中,則當(dāng)前客戶端證書被視為無效證書。 | 請(qǐng)以實(shí)際的證書吊銷列表名稱為準(zhǔn)。默認(rèn)值:空,表示沒有吊銷列表。 |
ssl_ciphers | SSL通訊使用的加密算法。 | 本產(chǎn)品支持的加密算法的詳細(xì)信息請(qǐng)參見表4。**默認(rèn)值:**ALL,表示允許對(duì)端使用產(chǎn)品支持的所有加密算法,但不包含ADH、LOW、EXP、MD5算法。 |
ssl_cert_notify_time | SSL服務(wù)器證書到期前提醒的天數(shù)。 | 請(qǐng)按照需求配置證書過期前提醒天數(shù)。**默認(rèn)值:**90 |
在客戶端配置SSL認(rèn)證相關(guān)的環(huán)境變量,詳細(xì)信息請(qǐng)參見表3。
說明: 客戶端環(huán)境變量的路徑以“/home/omm”為例,在實(shí)際操作中請(qǐng)使用實(shí)際路徑進(jìn)行替換。
表 3 客戶端參數(shù)
環(huán)境變量 | 描述 | 取值范圍 |
---|---|---|
PGSSLCERT | 指定客戶端證書文件,包含客戶端的公鑰??蛻舳俗C書用以表明客戶端身份的合法性,公鑰將發(fā)送給對(duì)端用來對(duì)數(shù)據(jù)進(jìn)行加密。 | 必須包含文件的絕對(duì)路徑,如:export PGSSLCERT='/home/omm/client.crt' 默認(rèn)值:空 |
PGSSLKEY | 指定客戶端私鑰文件,用以對(duì)公鑰加密的數(shù)據(jù)進(jìn)行解密。 | 必須包含文件的絕對(duì)路徑,如:export PGSSLKEY='/home/omm/client.key' 默認(rèn)值:空 |
PGSSLMODE | 設(shè)置是否和服務(wù)器進(jìn)行SSL連接協(xié)商,以及指定SSL連接的優(yōu)先級(jí)。 | **取值及含義:**disable:只嘗試非SSL連接。allow:首先嘗試非SSL連接,如果連接失敗,再嘗試SSL連接。prefer:首先嘗試SSL連接,如果連接失敗,將嘗試非SSL連接。require:只嘗試SSL連接。如果存在CA文件,則按設(shè)置成verify-ca的方式驗(yàn)證。verify-ca:只嘗試SSL連接,并且驗(yàn)證服務(wù)器是否具有由可信任的證書機(jī)構(gòu)簽發(fā)的證書。verify-full:只嘗試SSL連接,并且驗(yàn)證服務(wù)器是否具有由可信任的證書機(jī)構(gòu)簽發(fā)的證書,以及驗(yàn)證服務(wù)器主機(jī)名是否與證書中的一致。**默認(rèn)值:**prefer |
PGSSLROOTCERT | 指定為客戶端頒發(fā)證書的根證書文件,根證書用于驗(yàn)證服務(wù)器證書的有效性。 | 必須包含文件的絕對(duì)路徑,如:export PGSSLROOTCERT='/home\/omm\/certca.pem' **默認(rèn)值:**空 |
PGSSLCRL | 指定證書吊銷列表文件,用于驗(yàn)證服務(wù)器證書是否在廢棄證書列表中,如果在,則服務(wù)器證書將會(huì)被視為無效證書。 | 必須包含文件的絕對(duì)路徑,如:export PGSSLCRL='/home/omm/sslcrl-file.crl' **默認(rèn)值:**空 |
服務(wù)器端參數(shù)ssl、require_ssl與客戶端參數(shù)sslmode配置組合結(jié)果如下:
ssl(服務(wù)器) | sslmode(客戶端) | require_ssl(服務(wù)器) | 結(jié)果 |
---|---|---|---|
on | disable | on | 由于服務(wù)器端要求使用SSL,但客戶端針對(duì)該連接禁用了SSL,因此無法建立連接。 |
disable | off | 連接未加密。 | |
allow | on | 連接經(jīng)過加密。 | |
allow | off | 連接未加密。 | |
prefer | on | 連接經(jīng)過加密。 | |
prefer | off | 連接經(jīng)過加密。 | |
require | on | 連接經(jīng)過加密。 | |
require | off | 連接經(jīng)過加密。 | |
verify-ca | on | 連接經(jīng)過加密,且驗(yàn)證了服務(wù)器證書。 | |
verify-ca | off | 連接經(jīng)過加密,且驗(yàn)證了服務(wù)器證書。 | |
verify-full | on | 連接經(jīng)過加密,且驗(yàn)證了服務(wù)器證書和主機(jī)名。 | |
verify-full | off | 連接經(jīng)過加密,且驗(yàn)證了服務(wù)器證書和主機(jī)名。 | |
off | disable | on | 連接未加密。 |
disable | off | 連接未加密。 | |
allow | on | 連接未加密。 | |
allow | off | 連接未加密。 | |
prefer | on | 連接未加密。 | |
prefer | off | 連接未加密。 | |
require | on | 由于客戶端要求使用SSL,但服務(wù)器端禁用了SSL,因此無法建立連接。 | |
require | off | 由于客戶端要求使用SSL,但服務(wù)器端禁用了SSL,因此無法建立連接。 | |
verify-ca | on | 由于客戶端要求使用SSL,但服務(wù)器端禁用了SSL,因此無法建立連接。 | |
verify-ca | off | 由于客戶端要求使用SSL,但服務(wù)器端禁用了SSL,因此無法建立連接。 | |
verify-full | on | 由于客戶端要求使用SSL,但服務(wù)器端禁用了SSL,因此無法建立連接。 | |
verify-full | off | 由于客戶端要求使用SSL,但服務(wù)器端禁用了SSL,因此無法建立連接。 |
SSL傳輸支持一系列不同強(qiáng)度的加密和認(rèn)證算法。用戶可以通過修改postgresql.conf中的ssl_ciphers參數(shù)指定數(shù)據(jù)庫服務(wù)器使用的加密算法。目前本產(chǎn)品SSL支持的加密算法如表4所示。
表 4 加密算法套件
OpenSSL套件名 | IANA套件名 | 安全程度 |
---|---|---|
ECDHE-RSA-AES128-GCM-SHA256 | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | HIGH |
ECDHE-RSA-AES256-GCM-SHA384 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | HIGH |
ECDHE-ECDSA-AES128-GCM-SHA256 | TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | HIGH |
ECDHE-ECDSA-AES256-GCM-SHA384 | TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | HIGH |
DHE-RSA-AES128-GCM-SHA256 | TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | HIGH |
DHE-RSA-AES256-GCM-SHA384 | TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 | HIGH |
說明:
- 目前只支持上表中的6種加密算法套件。
- 配置參數(shù)ssl_ciphers的默認(rèn)值為ALL,表示支持上表中的所有加密算法。為保持前向兼容保留了DHE算法套件,即DHE-RSA-AES128-GCM-SHA256和DHE-RSA-AES256-GCM-SHA384,根據(jù)CVE-2002-20001漏洞披露DHE算法存在一定安全風(fēng)險(xiǎn),非兼容場(chǎng)景不建議使用,可將ssl_ciphers參數(shù)配置為僅支持ECDHE類型算法套件。
- 如需指定以上加密算法套件,可以設(shè)置ssl_ciphers為上表中OpenSSL套件名稱,加密算法套件之間需要使用分號(hào)分割,如在postgresql.conf設(shè)置:ssl_ciphers=‘ECDHE-RSA-AES128-GCM-SHA256;ECDHE-ECDSA-AES128-GCM-SHA256’。
- SSL連接認(rèn)證不僅增加了登錄(創(chuàng)建SSL環(huán)境)及退出過程(清理SSL環(huán)境)的時(shí)間消耗,同時(shí)需要消耗額外的時(shí)間用于加解密所需傳輸?shù)膬?nèi)容,因此對(duì)性能有一定影響。特別的,對(duì)于頻繁的登錄登出,短時(shí)查詢等場(chǎng)景有較大的影響。
- 在證書有效期小于7天的時(shí)候,連接登錄會(huì)在日志中產(chǎn)生告警提醒。
👍 點(diǎn)贊,你的認(rèn)可是我創(chuàng)作的動(dòng)力!
?? 收藏,你的青睞是我努力的方向!
?? 評(píng)論,你的意見是我進(jìn)步的財(cái)富!