Harbor配置https訪問

2021-10-25 07:18:32 字數 3594 閱讀 2510

harbor內部預設是http方式進行通訊的,如果要配置https就需要用到證書。harbor支援用三方簽發證書,也支援使用自簽發證書。

linux openssl簽發證書

habor https證書配置官方文件

1、拿到應用證書和對應的私鑰:

2、修改harbor.yml配置:

tip:在修改配置之前,先確harbor組成保容器全部停止,否則後續操作會報錯;

3、執行prepare重新生成一遍配置;

4、啟動harbor:

這時候直接去瀏覽器訪問ui介面就可以以https的方式進行訪問了,因為harbor.yml中指定的證書和私鑰就是給harbor ui的nginx配置的。

接下來給docker配置客戶端證書,因為harbor僅僅是乙個映象倉庫,我們還需要有docker環境和倉庫做互動(比如pull、push映象等)

5、在準備如下目錄和證書:

安裝了docker之後就有/etc/docker目錄,其下面是daemon.json和key.json。需要在下面繼續建立certs.d/ip:port,這個ip即為證書使用者的ip,表示該證書給該ip使用,然後將應用證書、應用私鑰、ca證書放置到該目錄下。

由於docker認為crt為ca證書,cert為客戶端證書,而此處需要的正是要客戶端證書(cert),因此還需要做一次轉化:

#inform指定輸入證書的格式,這裡指in後面指定的證書的格式,這裡指定的格式是pem,可以通過檢視證書的內容,如果是開頭是以begin、結尾是以end開頭的都是pem格式

執行上述命令後得到.cert檔案:

由於docker訪問倉庫的證書要求應用證書及其私鑰需要以ip作為名字,因此需要修改這兩個檔案的名字(目錄和檔名為證書配置的ip,這個是固定格式,否則在docker訪問的時候會解析不到檔案

subjectaltname = ip:10.30.12.211 #san擴充套件,這裡引用的是下面alt_names這個section裡面的內容

eof用vim檢視是這個樣子:

因為這個含有擴充套件項的擴充套件檔案只有在應用證書簽發的時候才會用到,因此像ca私鑰、ca證書、應用私鑰、應用csr檔案都還是原來的建立方式,只不過最後的簽發應用證書要加上擴充套件檔案:

#req表示in指定的是乙個csr檔案

#ca指定乙個ca證書

#cakey指定ca證書的私鑰

#cacreateserial表示serial檔案不存在的時候建立乙個用來記錄證書序號的檔案

#in指定輸入檔案,這裡是csr檔案

#out指定乙個輸出檔案,這裡是crt證書檔案

#extfile指定乙個編寫了擴充套件項的擴充套件檔案,這裡需要包含san擴充套件

#day指定證書有效時常

至此所有的證書都準備好了,按上面的步驟1開始重新進行證書的配置,然後重試docker login看是否能夠登陸上harbor倉庫。

出現這個問題依然還是證書問題,不過可以預料到,因為上面我們放到/etc/docker/certs.d/10.30.12.211:443/下的檔案是:

但是前面我們說過,docker客戶端認為crt是ca證書,cert才是客戶端證書,這時候ca證書是cacert.pem,與docker客戶端所能識別的檔案不同,所以才會報這個錯,只要使用這個命令轉換一下就可以了:

openssl x509 -inform pem -in cacert.pem -out ca.crt
最終目錄中保留的檔案:

檢查/etc/docker/daemon.json,確保insecure-registries中沒有配置該倉庫的訪問點(ip:port)。因為一旦配置了該引數,說明要以http的方式訪問,就無法判斷當前https證書配置是否配置成功,就失去配置https的意義了。

可以看到此處並沒有配置10.30.12.211倉庫的訪問點,因此可以放心重啟docker.service、並啟動harbor的組成容器,嘗試登陸:

q:harbor配置了證書之後chrome訪問harbor ui報證書不安全而拒絕訪問?

a:參考:

q:harbor配置ssl證書之後docker想以https(即daemon.json中沒有配置insecure-registries)方式訪問harbor,報:證書沒有配置包含harbor訪問點ip的san擴充套件?

a:在簽發應用證書的時候需要指定乙個配置擴充套件項的擴充套件檔案(至少需要包含san擴充套件),參考上面驗證。

q:harbor配置ssl證書之後docker想以https(即daemon.json中沒有配置insecure-registries)方式訪問harbor,報:證書是未知許可權簽發的證書?

a:這裡主要是因為沒有識別到ca證書,因為docker認為.crt為ca證書,.cert為客戶端證書,因此需要檢視一下/etc/docker/certs.d/ip/下的相關檔案命名是否符合規範,參考上面驗證。

配置對Harbor的HTTPS訪問

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

Harbor新增HTTPS證書

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

apache 配置https訪問

最近搞facebook小遊戲,h5通過ajax訪問伺服器端的時候發現 需要用https安全鏈結訪問,不然,直接拒絕。接下來寫一下怎麼配置https網域名稱 1 首先,你得有乙個https證書繫結的網域名稱 比如 www.test.com 這個東西很多地方都能申請啦,有免費的,有收費的,不多贅述。2 ...