文档章节

Docker仓库Harbor配置LDAP并开启TLS认证

Swire
 Swire
发布于 2017/08/23 11:05
字数 1205
阅读 53
收藏 0

公司使用harbor很长一段时间了,一直用http协议.最近升级到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.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填入用户名和密码即可完成登陆.

如果遇到错误,参考官方指导中Troubleshooting

© 著作权归作者所有

共有 人打赏支持
Swire
粉丝 2
博文 59
码字总数 11081
作品 0
东城
程序员
Docker 私有仓库方案比较与搭建

我们知道docker镜像可以托管到dockerhub中,跟代码库托管到github是一个道理。但如果我们不想把docker镜像公开放到dockerhub中,只想在部门或团队内部共享docker镜像,能不能项gitlab一样在搭...

jaazz
07/19
0
0
使用harbor配置私仓

安装harbor之前,需要安装好Python,Docker,DockerCompose。Python需要2.7以上的版本,Docker需要1.10以上的版本;Docker Compose 需要1.6.0以上的版本。 一:安装Docker Compose https://...

aaron428
2016/08/05
0
0
巧用Docker镜像仓库Harbor部署私有Mirror服务

本文作者付广平,UnitedStack有云存储工程师,北京邮电大学硕士,从事大数据和云计算相关工作,2016年毕业后加入UnitedStack大数据&容器组,负责Docker、Magnum和Sahara相关工作,Openstack...

project_harbor
2016/04/27
2.2K
0
企业级Docker Registry开源工具Harbor的介绍以及使用指南

Harbor 的简介以及基本架构 Harbor简介 基本架构 Harbor安装和配置指导 Harbor 可以使用以下三种方式进行安装部署: 在线安装: 使用者可以直接从docker hub上下载harbor的官方镜像。 离线安装...

Andy-xu
2016/11/12
881
0
docker本地镜像仓库harbor

http://blog.csdn.net/aixiaoyang168/article/details/73549898 概述 Harbor介绍 环境、软件准备 Harbor服务搭建 Harbor跨数据复制配置 一、 Docker容器应用的开发和运行离不开可靠的镜像管理...

卫庄的痛
2017/11/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(一)软件测试专题——之Linux常用命令篇01

本文永久更新地址:https://my.oschina.net/bysu/blog/1931063 【若要到岸,请摇船:开源中国 不最醉不龟归】 Linux的历史之类的很多书籍都习惯把它的今生来世,祖宗十八代都扒出来,美其名曰...

不最醉不龟归
25分钟前
6
0
蚂蚁金服Java开发三面

8月20号晚上8点进行了蚂蚁金服Java开发岗的第三面,下面开始: 自我介绍(要求从实践过程以及技术背景角度着重介绍) 实习经历,说说你在公司实习所做的事情,学到了什么 关于你们的交易平台...

edwardGe
32分钟前
7
0
TypeScript基础入门 - 函数 - this(三)

转载 TypeScript基础入门 - 函数 - this(三) 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.4 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
42分钟前
0
0
Spark core基础

Spark RDD的五大特性 RDD是由一系列的Partition组成的,如果Spark计算的数据是在HDFS上那么partition个数是与block数一致(大多数情况) RDD是有一系列的依赖关系,有利于Spark计算的容错 RDD中每...

张泽立
50分钟前
0
0
如何搭建Keepalived+Nginx+Tomcat高可用负载均衡架构

一.概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已...

Java大蜗牛
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部