docker 的坑是真尼玛多,私有认证都卡了我两天,看官方文档都要靠猜鄙视下,废话不多说,记录下,搞起

两台机器,harbor  jenkins

使用域名登录harbor,我这里只做了host绑定,如果是生产或者有条件,直接在dns里做a记录,然后申请第三方的ca证书,注意:一定要记住申请ca证书时的所有信息

1,自制证书 在harbor上操作

mkdir /opt/cakey
cd /opt/cakey/
openssl req  -newkey rsa:4096 -nodes -sha256 -keyout ca.key  -x509 -days 365 -out ca.crt  #自签名CA
openssl req  -newkey rsa:4096 -nodes -sha256 -keyout harbor.studeylinux.com.key     -out  harbor.studeylinux.com.csr #生成csr文件
openssl x509 -req -days 365 -in  harbor.studeylinux.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial  -out harbor.studeylinux.com.crt #CA签名

现在目录下有6个文件

total 24
-rw-r--r-- 1 root root 2106 Feb 10 05:52 ca.crt #CA的自签名证书
-rw-r--r-- 1 root root 3272 Feb 10 05:52 ca.key #CA的私钥
-rw-r--r-- 1 root root   17 Feb 11 08:58 ca.srl #自动生成的文件
-rw-r--r-- 1 root root 2009 Feb 11 08:58 harbor.studeylinux.com.crt #CA签名后的用于配置nginx https的crt证书
-rw-r--r-- 1 root root 1817 Feb 11 08:56 harbor.studeylinux.com.csr #申请签名的csr文件,此文件主要用户申请crt证书
-rw-r--r-- 1 root root 3268 Feb 11 08:56 harbor.studeylinux.com.key #域名的私钥

2,修改harbor配置文件,现在用的是harbor0.5版本,无需修改nginx

cd /usr/local/src/harbor
vim harbor.cfg
hostname = harbor.studeylinux.com
ui_url_protocol = https

crt_country = CN
crt_state = Beijing 
crt_location = YiZhuang
crt_organization = ZQDL
crt_organizationalunit = IT
crt_commonname = harbor.studeylinux.com
crt_email = 894818965@qq.com

注意:以上信息,都是在生成ca证书的时候填写的,要记住,也要卸载harbor的配置文件里

3,编辑docker的配置文件

vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald' #删除-insecure-registry信息

这里需要说明一下-insecure-registry ,docker 1.3.2以后必须启用的tls 认证需要,启用了,就是规避认证,我们用https加密,所以要把这个信息去掉,默认是没有的

4,重新加载docker和harbor配置,并重启

systemctl restart  docker
./prepare
docker-compose down
docker-compose up -d

5,此时再访问harbor web,就会出现https 认证的页面了

6,即使是本地harbor登录,也需要ca认证,但是必须把ca文件cp 到指定目录位置

mkdir /etc/docker/certs.d/harbor.studeylinux.com
cp /opt/cakey/ca.crt  /etc/docker/certs.d/harbor.studeylinux.com/
docker login harbor.studeylinux.com
Username: admin
Password:
Login Succeeded

7,远程jenkins 登录harbor,

mkdir /etc/docker/certs.d/harbor.studeylinux.com
scp /etc/docker/certs.d/harbor.studeylinux.com/ca.crt  harborIP:/etc/docker/certs.d/harbor.studeylinux.com/ca.crt
docker login harbor.studeylinux.com
Username: admin
Password:
Login Succeeded

至此,可以把jenkins 构建好的images push到私有仓库了