由於客戶在 minio 上使用 haproxy 1版本 8,作業系統使用 RHCL8版本 6. 作業系統核心、SSL 證書位和 HAPROXY 1024 位證書上出現問題。
針對這個問題,進行了長達 7 個工作日的測試以得出這一結論。
minio全球團隊將生成知識記錄,並以這種方式解決。
在新標準中,證書是: PEM 和私鑰是單獨設定的,由 Haproxy 讀取。
但是在 haproxy 1 中在版本 8 及更早版本中,證書為: 將PEM和私鑰合成為證書,生成證書。
否則,將生成錯誤資訊,如下所示:
haproxy service fails with error "bind :443 unable to load ssl certificate from pem file file".
將顯示以下錯誤訊息:
[warning] 096/214815 (5805) :parsing [/etc/haproxy/haproxy.cfg:67] :'bind 0.0.0.0:443' :
unable to load default 1024 bits dh parameter for certificate '/etc/haproxy/bundle.pem'., ssl library will use an automatically generated dh parameter.
warning] 096/214815 (5805) :setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. please set a value >= 1024 to make this warning disappear.
主要提示是證書的位數為 1024 位,不符合工作負載的要求,需要將其更改為 2048 位。
您可以使用一些不同的設定來解決 Tunessl.default-dh-param 警告。
一種選擇是顯式設定調諧ssl.default-dh-param 值設定為大於 1024 的值。
但是,haproxy 文件建議指定自定義 diffie-hellman 引數,因為此方法更安全,因此我們將改用該方法。 /etc/haproxy/haproxy.cfg 首先,您將使用實用程式生成 dhparamsPEM 檔案。
建立檔案後,將其新增到全域性 haproxy 配置部分,以便任何塊都繼承該設定。 opensslfrontend 要生成自定義 dh 引數,請執行以下命令:
sudo openssl dhparam -out /etc/haproxy/dhparams.pem 2048
輸出過程稍等片刻:
generating dh parameters, 2048 bit long safe prime, generator 2
this is going to take a long time
命令完成後,將 haproxy 配置為使用自定義 dh 引數檔案。 在您喜歡的編輯器或您喜歡的編輯器中開啟 etc haproxy haproxycfg:
sudo vi /etc/haproxy/haproxy.cfg
輸出資訊如下:
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
# utilize system-wide crypto-policies
#ssl-default-bind-ciphers profile=system
ssl-default-server-ciphers profile=system
現在在 ssl-default-server-ciphers profile=system 行後新增一行,如下所示:
ssl-dh-param-file /etc/haproxy/dhparams.pem
整個部分應類似於以下內容,包括您新增的新突出顯示的 ssl-dh-param-file 行:
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
# utilize system-wide crypto-policies
#ssl-default-bind-ciphers profile=system
ssl-default-server-ciphers profile=systemssl-dh-param-file /etc/haproxy/dhparams.pem
再服務:
sudo systemctl restart haproxy.service準備相關證書並修改etc主機,劫持相關網域名稱:vim etc hosts
劫持後的結果如下:1270.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.31.233 img.minio.org.CN測試ping:ping imgminio.org.CN測試成功。
3.2 綜合相關證書。
將私鑰整合到。 crt,將其名稱修改為 。 PEM 或保留原始名稱。 CRT 是可以接受的。
其工作原理如下:cat imgminio.org.cn.key >>img.minio.org.cn.PEM 注意:此示例基於 imgminio.org.cn 為例,您可以將其替換為實際的網域名稱。
3.3. 調整 haproxy 後新增伺服器。
執行以下命令,新增haproxy後端伺服器資訊。
vim /etc/haproxy/haproxy.cfg新增以下資訊:
backend servers
balance roundrobin
mode http
server web1 192.168.31.211:9001 check
server web2 192.168.31.212:9001 check
server web3 192.168.31.213:9001 check
server web4 192.168.31.214:9001 check
backend servers-endpoint
balance roundrobin
mode http
server web1 192.168.31.211:9000 check
server web2 192.168.31.212:9000 check
server web3 192.168.31.213:9000 check
server web4 192.168.31.214:9000 check
為了獲得更好的結果,我們在 443 和 9443 中新增了 TLS 證書。 在 HTTP 埠 9000 和 9001 上,不要新增證書。 前端配置如下:
frontend minio-https
bind *:443 ssl crt /etc/haproxy/certs/img.minio.org.cn.pem
bind *:9001
mode http
default_backend servers
frontend endpoint
bind *:9000
bind *:9443 ssl crt /etc/haproxy/certs/img.minio.org.cn.pem
mode http
default_backend servers-endpoint
HTTPS 配置成功。
重新啟動服務,配置成功。
HTTP 配置成功。
MC 客戶端。
wget mv mc /usr/local/bin/mc
chmod +x /usr/local/bin/mc
ln -s /usr/local/bin/mc /usr/bin/mc
將 9443 相關終結點新增到 mc:
新增遠端伺服器。
mc alias set ssl minioadmin minioadmin
#output
added `ssl` successfully.
mc ls ssl
顯示輸出資訊。
2023-10-19 10:45:13 edt] 0b test/
2023-10-19 10:45:19 edt] 0b test1/
您可以使用較新的版本或我們官方推薦的配置。 如果您使用的是早期版本,我們將為您的企業客戶提供全面的解決方案。
如需商業技術支援,請聯絡公尺尼奧中國官方網站。