Docker仓库Harbor配置LDAP并开启TLS认证
2017-08-23 00:00
726 查看
公司使用harbor很长一段时间了,一直用http协议.最近升级到
使用命令
设置hostname项为你harbor服务的IP或者域名,但不要设置为
具体可以参考官方指导
若是设置hostname为域名,就用更方便的生成方式:
将生成的server.crt和server.key放到在
网页https
docker login 使用ssl.
然后输入命令
如果遇到错误,参考官方指导中Troubleshooting
1.1.2版本了,顺便开启https,因此记录一下.
获取安装包
可以到项目官方Github的Release发布地址下载离线安装包,也可以下载在线安装包,一般用离线.使用命令
tar -zxf harbor-offline-installer-xxx.tgz解压下载的离线安装包.
配置
进入目录cd harbor,修改harbor.cfg文件
vi harbor.cfg
设置hostname项为你harbor服务的IP或者域名,但不要设置为
localhost或者
127.0.0.1.
## Configuration file of Harbor #设置hostname项为你harbor服务的IP或者域名. #因为需要使用外部链接来获取服务,所以不要设置为 `localhost` 或 `127.0.0.1`. hostname = harbor.example.com #连接方式默认为http,可以改为https. ui_url_protocol = http #mysql数据库的root密码,另有需求可以自行修改. db_password = root123 #最大并发数默认为3.如果是公司或者公共镜像,可以根据服务器资源适当加大,我这改成10. max_job_workers = 10 #自动生成docker token令牌,默认为on,如果是第一次安装设置为on让它自动生成比较方便;更新或者更改设置或自行指定证书则可以设置为off #可以参考官方指导: https://github.com/vmware/harbor/blob/master/docs/customize_token_service.md #还有docker官方说明: https://github.com/docker/distribution/blob/master/docs/spec/auth/token.md customize_crt = off #设置为https时,需要指定证书. ssl_cert = /data/cert/server.crt ssl_cert_key = /data/cert/server.key #存放secretkey 的路径 secretkey_path = /data #如果只部署单个Harbor,则设置为NA. admiral_url = NA #NOTES: The properties between BEGIN INITIAL PROPERTIES and END INITIAL PROPERTIES #only take effect in the first boot, the subsequent changes of these properties #should be performed on web ui #************************BEGIN INITIAL PROPERTIES************************ #Email邮件服务配置.这里可以先不写,等harbor部署成功登录后,也可在页面的设置里修改和验证. #Email server uses the given username and password to authenticate on TLS connections to host and act as identity. #Identity left blank to act as username. email_identity = email_server = smtp.mydomain.com email_server_port = 25 email_username = sample_admin@mydomain.com email_password = abc email_from = admin <sample_admin@mydomain.com> email_ssl = false #harbor的初始密码,自行修改. harbor_admin_password = Harbor12345 #账户信息的存放与认证方式可设置为 `ldap_auth`或`db_auth`,默认`db_auth`. auth_mode = db_auth #LDAP服务 #地址. ldap_url = ldaps://ldap.mydomain.com #设置一个有搜索LDAP/AD服务权限的用户 #若是LDAP/AD不支持匿名搜索,则可以去掉ldap_serchdn与ldap_search_pwd的注释. #ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com #ldap_search_pwd = password #查找用户 ldap_basedn = ou=people,dc=mydomain,dc=com #过滤设置. #ldap_filter = (objectClass=person) #用于在LDAP搜索期间匹配用户的属性,它可以是uid,cn,email或其他属性。 ldap_uid = uid #the scope to search for users, 1-LDAP_SCOPE_BASE, 2-LDAP_SCOPE_ONELEVEL, 3-LDAP_SCOPE_SUBTREE ldap_scope = 3 #ldap连接超时时间,默认5seconds. ldap_timeout = 5 #是否开放注册,默认on,自用可以设置为off,创建成功登陆后可在设置中修改 self_registration = off #token超时时间,默认30min,创建成功登陆后可在设置中修改 token_expiration = 30 #设置是否可以所有用户都创建仓库镜像,默认everyone,可设置为adminonly,创建成功登陆后可在设置中修改 project_creation_restriction = everyone #是否验证远程SSL证书.默认on.设置off则可取消验证. verify_remote_cert = on #************************END INITIAL PROPERTIES************************ #############
生成证书
可以选择自行生成或者使用Let’s Encrypt颁发的证书.这里我用自行生成.
具体可以参考官方指导
若是设置hostname为域名,就用更方便的生成方式:
mkdir -p /data/cert/ && cd /data/cert #需要指定的域名,这里以harbor.example.com为例. localdomain=harbor.example.com # #需要注意如果hostname是IP则需将CN值改成其他的,不过推荐用*,即星号. openssl req -nodes -subj "/C=CN/ST=Guangdong/L=Shenzhen/CN=$localdomain" -newkey rsa:2048 -keyout $localdomain.key -out $localdomain.csr openssl x509 -req -days 3650 -in $localdomain.csr -signkey $localdomain.key -out $localdomain.crt #需要注意如果hostname填的是域名用这条: openssl x509 -req -in $localdomain.csr -CA $localdomain.crt -CAkey $localdomain.key -CAcreateserial -out $localdomain.crt -days 3650 #若hostname是IP则使用这条命令,将subjectAltName段IP替换为harbor服务器的IP: echo "subjectAltName = IP:192.168.1.101" > extfile.cnf && openssl x509 -req -days 365 \ -in $localdomain.csr -CA $localdomain.crt -CAkey $localdomain.key -CAcreateserial -extfile extfile.cnf -out $localdomain.crt #将$localdomain.crt和$localdomain.key改为server.crt和server.key mv $localdomain.crt server.crt && mv $localdomain.key server.key
将生成的server.crt和server.key放到在
harbor.cfg中ssl证书指定路径,我这里是
/data/cert/.
验证SSL
需要验证两项:网页https
docker login 使用ssl.
https
打开hostname填的地址,默认会强制跳转到https请求.输入用户名密码,默认管理员账号admin,密码Harbor12345.docker login
将生成的server.crt证书复制到需要登录的虚拟机上,路径为
/etc/docker/certs.d/$hostname/server.crt,这里的
$hostname即
harbor.cfg中hostname的值,若是指定了端口,则格式为
/etc/docker/certs.d/$hostname:port/server.crt。
然后输入命令
docker login $hostname填入用户名和密码即可完成登陆.
如果遇到错误,参考官方指导中Troubleshooting
相关文章推荐
- Docker镜像仓库Harbor之搭建及配置
- Docker镜像仓库Harbor安装与配置
- Docker镜像仓库Harbor之Swagger REST API整合配置
- docker 私用仓库Harbor搭建及配置
- Docker镜像仓库Harbor之搭建及配置
- 详解基于Harbor搭建Docker私有镜像仓库
- Docker--------Harbor registry私有仓库搭建 [ Http ]
- Harbor,docker仓库备库的搭建
- docker本地镜像仓库harbor
- 基于 Harbor 搭建 Docker 私有镜像仓库
- docker深入1-配置非https的公司私有的registry仓库
- 巧用Docker镜像仓库Harbor部署私有Mirror服务
- 构建docker高可用私有仓库基于Harbor开源系统
- docker 私有镜像仓库 harbor 搭建
- 基于 Harbor 搭建 Docker 私有镜像仓库
- docker 私有仓库配置
- 在centos7.x系统,配置docker私有镜像仓库
- 搭建docker仓库harbor
- Docker私有仓库管理之Harbor搭建
- Docker Registry Server 搭建,配置免费HTTPS证书,及拥有权限认证、TLS 的私有仓库