Harbor配置證書訪問

一,生成證書

由於Harbor不附帶任何證書,它默認使用HTTP來提供註冊表請求。但是,強烈建議爲任何生產環境啓用安全性。Harbour有一個Nginx實例作爲所有服務的反向代理,您可以使用準備腳本來配置Nginx來啓用https。

1,獲得證書

假設您的註冊表的主機名是reg.yourdomain.com,並且其DNS記錄指向您正在運行Harbor的主機。您首先應該從CA獲得證書。證書通常包含.crt文件和.key文件,例如yourdomain.com.crt和yourdomain.com.key。

在測試或開發環境中,您可以選擇使用自簽名證書而不是CA中的證書。以下命令生成您自己的證書:

創建您自己的CA證書:

 openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt

2,生成證書籤名請求:

如果您使用FQDN-全限定域名(如reg.yourdomain.com)連接註冊表主機,則必須使用reg.yourdomain.com作爲CN(通用名稱)。否則,如果您使用IP地址來連接您的註冊表主機,CN可以是任何類似您的名字等等:

openssl req -newkey rsa:4096 -nodes -sha256 -keyout reg.cdcpsyb.com.key -out reg.cdcpsyb.com.csr

3,生成註冊表主機的證書:

如果您使用的是像reg.yourdomain.com這樣的FQDN 來連接您的註冊表主機,請運行以下命令以生成註冊表主機的證書:

  openssl x509 -req -days 365 -in reg.cdcpsyb.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out reg.cdcpsyb.com.crt

如果你使用IP,比如192.168.1.101來連接你的註冊表主機,你可以運行下面的命令:

# ip設置
echo subjectAltName = IP:192.168.1.101 > extfile.cnf
# 生成證書
openssl x509 -req -days 365 -in yourdomain.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out reg.cdcpsyb.com.crt

二、配置和安裝

1,獲取yourdomain.com.crt和yourdomain.com.key文件後,可以將它們放入如下目錄中/root/cert/:

  cp yourdomain.com.crt /root/cert/
  cp yourdomain.com.key /root/cert/ 

2,接下來,編輯文件make / harbor.cfg,更新主機名和協議,並更新屬性ssl_cert和ssl_cert_key:

  #set hostname
  hostname = reg.yourdomain.com
  #set ui_url_protocol
  ui_url_protocol = https
  ......
  #The path of cert and key files for nginx, they are applied only the protocol is set to https 
  ssl_cert = /root/cert/yourdomain.com.crt
  ssl_cert_key = /root/cert/yourdomain.com.key

3,爲Harbour生成配置文件:

  ./prepare

如果Harbor已經運行,請停止並刪除現有的實例。您的圖像數據保留在文件系統中

 docker-compose down  

4,最後重啓Harbour

  docker-compose up -d

爲Harbour設置HTTPS後,您可以通過以下步驟驗證它:

5,驗證訪問(使用foxmail瀏覽器訪問,谷歌不信任)

打開瀏覽器並輸入地址:https://reg.yourdomain.com。它應該顯示Harbor的用戶界面。

6,docker客戶端訪問

  • 刪除/etc/docker/daemon.json中的“-insecure-registry”內容。

  • 創建/etc/docker/certs.d/reg.yourdomain.com(或您的註冊表主機IP)文件夾,如果有端口則創建/etc/docker/certs.d/reg.yourdomain.com:port(或您的註冊表主機IP:端口)

  • 拷貝ca.crt證書到創建文件夾

  • 驗證登錄

  docker login reg.yourdomain.com

如果您已將nginx 443端口映射到另一個端口,則需要添加要登錄的端口,如下所示:

docker login reg.yourdomain.com:port

7故障排除

您可能會從證書頒發者處獲得中間證書。在這種情況下,您應該將中間證書與您自己的證書合併以創建證書包。您可以通過以下命令來實現此目的:

cat intermediate-certificate.pem >> yourdomain.com.crt 
  • 在運行docker守護程序的某些系統上,您可能需要在操作系統級別信任該證書。
    在Ubuntu上,這可以通過以下命令完成:
cp youdomain.com.crt /usr/local/share/ca-certificates/reg.yourdomain.com.crt

更新CA證書
在Red Hat(CentOS等)上,命令是:

cp yourdomain.com.crt /etc/pki/ca-trust/source/anchors/reg.yourdomain.com.crt

更新CA信任
原文鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章