在Harbor中使用HTTPS须要一下几个步骤:node
原Harbor官方文档的修改Nginx的证书步骤已经不须要了,在运行prepare时会自动建立出Nginx的配置文件,检查一下是否正确便可。nginx
这里是Harbor的HTTPS配置的快捷指南,更多详细操做参考:git
这里假定Registry服务器的IP地址是:192.168.1.8,主要介绍经过IP地址生成证书方法。github
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
openssl req -newkey rsa:4096 -nodes -sha256 -keyout 192.168.1.8.key -out 192.168.1.8.csr
demoCA是OpenSSL的证书存储依赖目录,创建在与上面的ca.crt的同级目录下。docker
mkdir demoCA cd demoCA touch index.txt echo '01' > serial cd ..
建完的目录结构:浏览器
. .. ca.crt ca.key demoCA ...
echo subjectAltName = IP:192.168.1.8 > extfile.cnf openssl ca -in 192.168.1.8.csr -out 192.168.1.8.crt -cert ca.crt -keyfile ca.key \ -extfile extfile.cnf -outdir .
Harbor的运行时由多个Docker Container组成,包括:Nginx、MySQL、UI、Proxy、log、JobService六个主要组成部分。能够从源码构建安装,也能够下载*.tgz安装包进行安装。服务器
git clone https://github.com/vmware/harbor.git
下载源码后,修改./make/harbor.cfg的内容,而后运行make便可。dom
从https://github.com/vmware/harbor/releases下载预先构建好的安装包,而后解压缩到目录,修改./make/harbor.cfg的内容,运行install.sh便可。工具
主要修改如下几个地方:测试
#配置Harbor服务的主机IP地址或主机名,注意要与CA证书的彻底一致。 #hostname = reg.mydomain.com hostname = 192.168.1.8 #配置Harbor使用https #ui_url_protocol = http ui_url_protocol = https #改成上面生成的CA客户端证书,注意路径一致,可以使用命令`pwd`得到。 #ssl_cert = /path/to/server.crt ssl_cert = /home/supermap/docker/192.168.1.8.crt #ssl_cert_key = /path/to/server.key ssl_cert_key = /home/supermap/docker/192.168.1.8.key
若是不在客户端部署证书,docker pull
会显示x509: certificate signed by unknown authority
。缘由在于docker engine对HTTP和未配置证书的https连接拒绝按照信任方式访问。
若是不在客户端部署证书,docker pull
会显示x509: certificate signed by unknown authority
,在Docker启动时设置参数 "--insecure-registry IP"便可。客户端部署证书后,便可直接访问,再也不报出错信息。
须要使用service docker restart
重启服务,在Ubuntu 15.04之后版本,须要使用systemctl daemon-reload && systemctl restart docker
从新载入服务参数并重启。
将ca.crt 复制到 docker 客户端的 /etc/docker/certs.d/yourdomain.com(registry服务器的IP)。例如:
#获取ca.crt文件,若是目录不存在,则须要预先手动建立之。 sudo scp user@192.168.1.8:~/docker/ca.crt /etc/docker/certs.d/192.168.1.8/
** 注意:**
若是将nginx 端口 443 设到了其它端口, 则须要建立目录 /etc/docker/certs.d/yourdomain.com: port(registry IP:port),加上端口号便可,如:192.168.1.8:446
。
** Linux和MacOS系统须要对证书得到系统级的信任。能够参考:Adding trusted root certificates to the server**
cp 192.168.1.8.crt /usr/local/share/ca-certificates/192.168.1.8.crt update-ca-certificates
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /root/docker/192.168.1.8.crt
也能够到浏览器中,管理和设置CA证书。对于自签名的根证书,能够选择ca.crt文件直接导入。**而后重启Docker服务。 **
在使用https的状况下,进行了访问控制,须要帐号登陆进去才能使用。
** 对于向上推送Docker镜像的帐号,须要到Harbor管理页面开启该帐号的“管理员”权限。**
到浏览器打开连接 https://192.168.1.8/
,登陆进去。初始帐号是admin,密码Harbor12345。而后建立一个帐户openthings。
docker login 192.168.1.8 #输入帐号和设置的密码
docker tag gispark/openrock 192.168.1.8/gispark/openrock:2016.10
将本机镜像192.168.1.8/gispark/openrock推送到Registry中。
docker push 192.168.1.8/gispark/openrock:2016.10
在其它机器上将镜像拉取下来(也须要预先登陆)。
docker pull 192.168.1.8/gispark/openrock:2016.10
而后就可使用"Docker run ..."运行整个Docker镜像了。
默认Docker的镜像存储在/data目录下,若是根目录空间不够,须要移到其它磁盘,参考:
【Harbor的Docker镜像存储路径修改:http://www.javashuo.com/article/p-obmfijum-gd.html】
** 根据本人测试,上面的方法在Docker 1.12.3和Ubuntu 16.0四、MacOS Sierra和ARM上的Raspberry PI(树莓派)均可以运行。**