1 簽名證書與自簽名證書
簽名證書:由權威頒發機構頒發給服務器或者個人用於證明自己身份的東西。
自簽名證書:由服務器自己頒發給自己,用於證明自己身份的東西,非權威頒發機構發布。
2 openssl簡介
openssl 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其它目的使用。
3 KEY與CSR的區別
Key通常用來存放一個公鑰或者私鑰,並非X.509證書,編碼同樣的,可能是PEM,也可能是DER。證書自身擁有一個密鑰對(即一個公鑰和一個私鑰),由公鑰(Public Key)與私鑰(Private Key)是通過一種算法得到,公鑰是密鑰對中公開的部分,私鑰則是非公開的部分。一般公鑰和密鑰的關系為:1,公鑰和私鑰成對出現、2,公開的密鑰叫公鑰,只有自己知道的叫私鑰、3,用公鑰加密的數據只有對應的私鑰可以解密、4,用私鑰加密的數據只有對應的公鑰可以解密、5,如果可以用公鑰解密,則必然是對應的私鑰加的密、6,如果可以用私鑰解密,則必然是對應的公鑰加的密。
CSR文件必須在申請和購買SSL證書之前創建。也就是證書申請者在申請數字證書時由CSP(加密服務提供者)在生成私鑰的同時也生成證書請求文件,證書申請 者只要把CSR文件提交給證書頒發機構后,證書頒發機構使用其根證書私鑰簽名就生成了證書公鑰文件,也就是頒發給用戶的證書。
4 證書配置之生成根證書
創建證書存放目錄:
mkdir -p /data/cert && cd /data/cert

4.1創建自己的CA證書(不使用第三方權威機構的CA來認證,自己充當CA的角色)
openssl genrsa -out ca.key 2048 #生成根證書私鑰(無加密)
4.2生成自簽名證書(使用已有私鑰ca.key自行簽發根證書)
openssl req -x509 -new -nodes -key ca.key -days 10000 -out ca.crt -subj "/CN=Harbor-ca" req 產生證書簽發申請命令
-x509 簽發X.509格式證書命令。X.509是最通用的一種簽名證書格式。 -new 生成證書請求 -key 指定私鑰文件 -nodes 表示私鑰不加密 -out 輸出 -subj 指定用戶信息
-days 有效期
5 證書配置之生成服務器端證書
5.1生成服務器端私鑰和CSR簽名請求
openssl req -newkey rsa:4096 -nodes -sha256 -keyout server.key -out server.csr
一路回車。。。
5.2簽發服務器證書
echo subjectAltName = IP:192.168.88.128 > extfile.cnf
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 365 -extfile extfile.cnf -out server.crt
x509 簽發X.509格式證書命令。
-req 表示證書輸入請求。
-days 表示有效天數
-extensions 表示按OpenSSL配置文件v3_req項添加擴展。
-CA 表示CA證書,這里為ca.crt
-CAkey 表示CA證書密鑰,這里為ca.key
-CAcreateserial表示創建CA證書序列號
-extfile 指定文件

6 修改hardor的配置文件hardor.cfg
更新主機名和協議
#set主機名 hostname = 192.168.88.128 #set ui_url_protocol ui_url_protocol = https


7 設置docker證書
# 如果如下目錄不存在,請創建,如果有域名請按此格式依次創建
mkdir -p /etc/docker/certs.d/192.168.88.128 # mkdir -p /etc/docker/certs.d/[IP2] # mkdir -p /etc/docker/certs.d/[example1.com] # 如果端口為443,則不需要指定。如果為自定義端口,請指定端口 # /etc/docker/certs.d/yourdomain.com:port # 將ca根證書依次復制到上述創建的目錄中 cp ca.crt /etc/docker/certs.d/192.168.88.128/
8 為Harbor生成配置文件
#首先重啟下docker
service docker restart
#為Harbor生成配置文件
./prepare

9 完成啟動Harbor
docker-compose up -d

訪問測試:

docker-compose down -v




