我的 azure VM 是由其他人生成的。它變得很重要。我需要為資料庫 SSL 創建一個服務器證書。我正在使用帶有letsencrypt的certbot,如下所示:
https://www.vultr.com/docs/use-ssl-encryption-with-postgresql-on-ubuntu-20-04/
我在這一步中陷入困境:
sudo certbot certonly --standalone -d zz-ubuntu1
Account registered.
Requesting a certificate for zz-ubuntu1
An unexpected error occurred:
Error creating new order :: Cannot issue for "zz-ubuntu1": Domain name needs at least one dot
所以,我沒有輸入域名,因為似乎沒有。
主機檔案保持不變:
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
似乎根本沒有關于域名的任何內容:
root@zz-ubuntu1:~/tmp_certbot_key# hostname -f
ZZ-UBUNTU1
為了讓 certbot 按照說明生成 CA 證書,我相信我需要給它一個 FQDN 但也許我可以做一些虛擬條目或軟糖......?
我無法訪問 azure 門戶。我確實有根。
有誰知道我是否可以采取任何步驟來生成證書?最好不要對那里的獨立 Postgres DB 造成任何損害。
uj5u.com熱心網友回復:
Let's encrypt 是一種獲取公開簽名證書的方法。這意味著證書簽名機構必須有某種方式來驗證證書簽名請求中的域是否可以與請求相關聯。通常,這是通過添加公共 DNS CNAME 或 TXT 記錄以及“證明”您擁有該域的內容,或者通過將內容添加到該域上的 Web 端點來完成的,這與您擁有該域的證據相同。
作為不合格的主機名,沒有人擁有ZZ-UBUNTU1. 它只是一個字串識別符號。您無法獲得此名稱的公共證書,因為在簽名之前無法對其進行驗證。
您可以執行以下操作:
您可以使用非公共 CA 密鑰簽署證書。將 CA 密鑰保存在安全的地方,將 CA 證書提供給客戶端,并將簽名的證書和密鑰提供給 postgres 服務器。公眾不會信任證書,但無論如何他們都不會連接到 postgres 服務器。如果 CA 密鑰是安全的,那么它在加密上與公開簽署的證書一樣安全。如果證書不需要由公眾驗證,這只是一個合適的解決方案,公眾沒有理由信任您的 CA 證書。
作為類似的替代方案,您可以使用自簽名證書。這意味著與證書關聯的密鑰也是用于簽署 CSR 的密鑰,因此 CA 密鑰材料和服務器密鑰材料是相同的。然后,您可以在客戶端配置中指定自簽名證書,
ca-cert以便驗證密鑰。這也僅對私人使用的證書有效,因為公眾無法驗證真實性。您可以在組織控制的域下使用 FQDN。您的組織必須允許您更新 DNS 或處理對 FQDN 的公共 http 請求,以便您可以提供所有權證明。例如,如果您有
example.com,您可以獲得 . 的公開簽名證書db.internal.example.com。然后您可以定義db.internal.example.com為 127.0.0.1 或 /etc/hosts 中的任何 IP。您應該知道,可以在證書透明度日志中發現任何具有公開簽名證書的 FQDN。此外,出于安全考慮,公共 DNS 可能無法可靠地決議為 127.0.0.1 或其他私有地址,但這在家庭網路上比在天藍色中更有可能。
Let's Encrypt 證書有效期為 90 天。文章說重啟 postgres 以獲取新證書,但這種強硬的方法會在重啟時中斷 postgresql 服務。從前一段時間的 postgres 10 開始,可以重新加載 ssl 證書,而無需重新啟動服務器或中斷現有客戶端。因此,如果您最終使用 let's encrypt,而不是每 10 天重新啟動一次資料庫服務器并導致中斷,請改為發出重新加載。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/511467.html
標籤:linuxPostgreSQLubuntussl证书机器人
