博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker仓库Harbor配置LDAP并开启TLS认证
阅读量:6418 次
发布时间:2019-06-23

本文共 4088 字,大约阅读时间需要 13 分钟。

  hot3.png

公司使用harbor很长一段时间了,一直用http协议.最近升级到1.1.2版本了,顺便开启https,因此记录一下.

获取安装包

可以到项目官方Github的下载离线安装包,也可以下载在线安装包,一般用离线.

使用命令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.mdcustomize_crt = off#设置为https时,需要指定证书.ssl_cert = /data/cert/server.crtssl_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.comemail_server_port = 25email_username = sample_admin@mydomain.comemail_password = abcemail_from = admin 
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_SUBTREEldap_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.csropenssl 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.keymv $localdomain.crt server.crt && mv $localdomain.key server.key

将生成的server.crtserver.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,这里的$hostnameharbor.cfg中hostname的值,若是指定了端口,则格式为/etc/docker/certs.d/$hostname:port/server.crt。 然后输入命令docker login $hostname填入用户名和密码即可完成登陆.

如果遇到错误,参考

转载于:https://my.oschina.net/idoop/blog/1519121

你可能感兴趣的文章
linux下mongodb定时备份指定的集合
查看>>
SMP架构多线程程序的一种性能衰退现象—False Sharing
查看>>
oVirt JBAS server start failed, ajp proxy cann't server correct. ovirt-engine URL cann't open
查看>>
CDP WebConsole上线公告
查看>>
ubuntu下安装摄像头应用程序xawtv
查看>>
GFS2,GFS,EXT2,EXT3 SEQ-write performance compare
查看>>
PostgreSQL 如何比较两个表的定义是否一致
查看>>
PHPCMS2008利用EXP
查看>>
扩展android-volley来开发Android restful client
查看>>
Linux Mint下Kindle Fire调试android程序
查看>>
自定义Background
查看>>
git笔记
查看>>
Android开源中国客户端学习 配置文件读写 以及其他一些工具类 <13>
查看>>
国外的opencv识别文档
查看>>
java获取指定字符串的下一个
查看>>
多行数据提交到Struts的ActionForm的List属性中
查看>>
理解RESTful架构
查看>>
Linux自动压缩备份目录文件与恢复
查看>>
Android 图片相关整理
查看>>
创建一个Hello World(React),组件的作用
查看>>