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