配置對Harbor的HTTPS訪問

2022-07-20 19:21:09 字數 4612 閱讀 6133

預設情況下,harbor不提供證書。可以在沒有安全性的情況下部署harbor,這樣您就可以通過http連線到它。但是,只有在沒有連線到外部internet的空間隙測試或開發環境中才可以使用http。在沒有空間隙的環境中使用http會暴露給中間人攻擊。在生產環境中,始終使用https。如果啟用帶公證人的內容信任對所有images進行正確簽名,則必須使用https。

要配置https,必須建立ssl證書。您可以使用由受信任的第三方ca簽名的證書,也可以使用自簽名證書。本節介紹如何使用openssl建立ca,以及如何使用ca簽署伺服器證書和客戶端證書。您可以使用其他ca提供程式,例如:let』s encrypt。

下面的過程假設您的harbor登錄檔的主機名是yourdomain.com,並且它的dns記錄指向執行harbor的主機。

在生產環境中,應該從ca獲取證書。在測試或開發環境中,可以生成自己的ca。若要生成ca證書,請執行以下命令。

1、生成ca證書私鑰。

openssl genrsa -out ca.key 4096

調整-subj選項中的值以反映您的組織。如果使用fqdn連線harbor主機,則必須將其指定為common name(cn)屬性。

公用名(common name)一般來講就是填寫你將要申請ssl證書的網域名稱 (domain)或子網域名稱(sub domain)。

例1:打算為「chinassl.net」申請ssl證 書,那這個公用名(common name)就要填寫「chinassl.net」,而不能填寫 「www.chinassl.net」,因為在申請ssl證書時發證機構認為「www.yourdomain.com」和 「yourdomain.com」是不同的兩個網域名稱;

例2:如將要為bill.chinassl.net申請ssl證書,那麼這裡公用名(common name)就 要填寫「bill.chinassl.net」而不能填寫「chinassl.net」或「www.chinassl.net」

openssl req -x509 -new -nodes -sha512 -days 3650 \

-subj "/c=cn/st=beijing/l=beijing/o=example/ou=personal/cn=yourdomain.com" \

-key ca.key \

-out ca.crt

證書通常包含.crt檔案和.key檔案,例如yourdomain.com.crt和yourdomain.com.key。

1、生成私鑰。

openssl genrsa -out yourdomain.com.key 4096

2、生成證書簽名請求(csr)。

調整-subj選項中的值以反映您的組織。如果使用fqdn連線harbor主機,則必須將其指定為common name(cn)屬性,並在key和csr檔名中使用它。

openssl req -sha512 -new \

-subj "/c=cn/st=beijing/l=beijing/o=example/ou=personal/cn=yourdomain.com" \

-key yourdomain.com.key \

-out yourdomain.com.csr

3、生成x509 v3擴充套件檔案。

無論您是使用fqdn還是使用ip位址連線到您的harbor主機,都必須建立此檔案,以便您可以為harbor主機生成符合使用者替代名稱(san)和x509 v3擴充套件要求的證書。替換dns條目以反映您的域。

cat > v3.ext <<-eof

authoritykeyidentifier=keyid,issuer

basicconstraints=ca:false

keyusage = digitalsignature, nonrepudiation, keyencipherment, dataencipherment

extendedkeyusage = serverauth

subjectaltname = @alt_names

[alt_names]

dns.1=yourdomain.com

dns.2=yourdomain

dns.3=hostname

eof

4、使用v3.ext檔案為您的港口主機生成證書。

將crs和crt檔名中的yourdomain.com替換為harbor主機名。

openssl x509 -req -sha512 -days 3650 \

-extfile v3.ext \

-ca ca.crt -cakey ca.key -cacreateserial \

-in yourdomain.com.csr \

-out yourdomain.com.crt

生成ca.crt、yourdomain.com.crt和yourdomain.com.key檔案後,必須將它們提供給harbor和docker,並重新配置harbor以使用它們。

1、將伺服器證書和金鑰複製到harbor主機上的certcificates資料夾中。

cp yourdomain.com.crt /data/cert/

cp yourdomain.com.key /data/cert/

2、將yourdomain.com.crt轉換為yourdomain.com.cert,供docker使用。

docker守護程序將.crt檔案解釋為ca證書,.cert檔案解釋為客戶端證書。

openssl x509 -inform pem -in yourdomain.com.crt -out yourdomain.com.cert

3、將伺服器證書、金鑰和ca檔案複製到港口主機上的docker certificates資料夾中。必須先建立適當的資料夾。

如果將預設nginx埠443對映到其他埠,請建立資料夾/etc/docker/certs.d/yourdomain.com:port或/etc/docker/certs.d/harbor_ip:port。

4、重新啟動docker引擎。

systemctl restart docker

您可能還需要在作業系統級別信任證書。有關詳細資訊,請參閱harbor安裝疑難解答。

下面的示例演示了使用自定義證書的配置。

/etc/docker/certs.d/

└── yourdomain.com:port

├── yourdomain.com.cert <-- server certificate signed by ca

├── yourdomain.com.key <-- server key signed by ca

└── ca.crt <-- certificate authority that signed the registry certificate

如果尚未部署harbor,請參閱配置harbor yml檔案,以獲取有關如何通過在harbor.yml中指定主機名和https屬性來配置harbor以使用證書的資訊。

如果您已經使用http部署了harbor並希望將其重新配置為使用https,請執行以下步驟。

1、執行prepare指令碼以啟用https。

harbor使用nginx例項作為所有服務的反向**。使用prepare指令碼將nginx配置為使用https。prepare位於harbor安裝包中,與install.sh指令碼處於同一級別。

./prepare

2、如果harbor正在執行,請停止並刪除現有例項。

images資料保留在檔案系統中,因此不會丟失任何資料。

docker-compose down -v

3、restart harbor:

docker-compose up -d

在為harbor設定https之後,您可以通過執行以下步驟來驗證https連線。

1、開啟瀏覽器並輸入它應該顯示港口介面。

某些瀏覽器可能會顯示一條警告,指出證書頒發機構(ca)未知。使用非來自可信第三方ca的自簽名ca時會發生這種情況。您可以將ca匯入瀏覽器以刪除警告。

2、在執行docker守護程序的計算機上,檢查/etc/docker/daemon.json檔案,確保沒有為設定-unsecure-registry選項。

3、從docker客戶端登入到harbor。

docker login yourdomain.com

如果您已經將nginx 443埠對映到另乙個埠,請在login命令中新增該埠。

docker login yourdomain.com:port

如果驗證成功,請參閱「港口管理」以獲取有關使用「港口」的資訊。

如果安裝失敗,請參閱海港安裝疑難解答。

Harbor配置https訪問

harbor內部預設是http方式進行通訊的,如果要配置https就需要用到證書。harbor支援用三方簽發證書,也支援使用自簽發證書。linux openssl簽發證書 habor https證書配置官方文件 1 拿到應用證書和對應的私鑰 2 修改harbor.yml配置 tip 在修改配置之前,...

Harbor新增HTTPS證書

若要配置https,必須建立ssl證書,可以使用受信任的第三方ca簽名的證書,也可以使用自簽名的證書。使用openssl建立ca,以及如何使用ca對伺服器證書和客戶端證書進行簽名。前提條件 已安裝好dokcer服務 已解壓harbor包之類的前置環境。生成證書頒發證書 1.生成ca證書私鑰 open...

Harbor啟用Https及Docker配置

解壓 tar xvf harbor offline installer v1.2.0 rc1.tgz 目錄結構為 1 修改harbor.cfg,修改ui url protocol為https,ssl cert和ssl cert key分別為證書和私鑰 2 修改harbor預設埠,需要修改docker...