自產憑證及在Nginx上掛憑證的文章在網路,AI也能給不錯的Solution,不過因應劇情需要還是要把流程講一遍。
在RedHat主機建立放憑證的目錄:
mkdir -p /home/appuser/a2a-proxy/certs
cd /home/appuser/a2a-proxy/certs
然後在該目錄產生私鑰與憑證:
openssl req -x509 -nodes -days 3650 \
-newkey rsa:2048 \
-keyout a2a-proxy.key \
-out a2a-proxy.crt \
-subj "/C=TW/ST=Taiwan/L=Taipei/O=Dev/OU=A2A/CN=10.1.2.5" \
-addext "subjectAltName=IP:10.1.2.5,DNS:localhost,DNS:a2a-proxy"
產生後會有:
/home/appuser/a2a-proxy/certs/a2a-proxy.crt
/home/appuser/a2a-proxy/certs/a2a-proxy.key
建議權限:
chmod 644 /home/appuser/a2a-proxy/certs/a2a-proxy.crt
chmod 600 /home/appuser/a2a-proxy/certs/a2a-proxy.key
修改a2a-proxy.container的[Container]下的內容:vi ~/.config/containers/systemd
[Container]
# 略...
PublishPort=8088:80
# 增加8443 port
PublishPort=8443:8443
Volume=/home/appuser/nginx/nginx.conf:/etc/nginx/nginx.conf:ro,Z
# 增加以下這行
Volume=/home/appuser/a2a-proxy/certs:/etc/nginx/certs:ro,Z
SELINUX的Z選項是指該目錄是容器專屬,ro選項是指Read Only。
然後再複習昨天的nginx.conf設定的部份:
server {
listen 8443 ssl;
server_name _;
ssl_certificate /etc/nginx/certs/a2a-proxy.crt;
ssl_certificate_key /etc/nginx/certs/a2a-proxy.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# 後面略...
}
再daemon-reload及restart a2a-proxy後,可以從在瀏覽器輸入:https://RedHatIP:8443,因為是是自簽憑證,所以瀏覽器不會信任所以 Chrome / Edge / Safari 會顯示「不安全」或「此連線並非私人連線」。可以直接參訪,預設會導向a2a-web的登入頁。