ad域子证书给nginx

步骤一:部署Docker容器(Https)

转到下载页面https://github.com/goharbor/harbor/releases,根据需求下载在线或者离线安装包。其中在线安装包不包含镜像文件。

导入到部署了docker的Linux中,并解压文件:

tar xzvf harbor-online-installer-version.tgz

或者:

tar xzvf harbor-offline-installer-version.tgz

解压完成后,开始HTTPs相关的配置。首先是创建CA的私钥:

openssl genrsa -out ca.key 4096

接着创建CA的证书

openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
 -key ca.key \
 -out ca.crt

X.509 证书由多个字段组成。该 Subject领域是与本教程最相关的领域之一。它给出了证书所属客户端的 DName。DName 是赋予 X.500 目录对象的唯一名称。它由许多称为相对可分辨名称 (RDN) 的属性值对组成。一些最常见的RDN及其解释如下:

  • CN: 通用名
  • OU: 组织单位
  • O: 组织
  • L: 地方
  • S: 州或省名
  • C: 国家的名字

例如:

openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=UK/ST=Wales/L=Cardiff/O=Cardiff University/OU=Headquarter/CN=project.com" \
 -key ca.key \
 -out ca.crt

生成CA的私钥和证书后,需要生成Harbor的私钥和证书:

生成私钥命令:

openssl genrsa -out yourdomain.com.key 4096

后续文章中,yourdomain.com.key将用实际的名称代替:

openssl genrsa -out harbor.project.com.key 4096

接下来,生成Harbor的证书请求文件:

openssl req -sha512 -new \
    -subj "/C=UK/ST=Wales/L=Cardiff/O=Cardiff University/OU=Headquarter/CN=harbor.project.com" \
    -key harbor.project.com.key \
    -out harbor.project.com.csr

配置x509 v3拓展文件,配置该文件的目的是帮助生成符合主题备用名称 (SAN) 和 x509 v3 的证书扩展要求的证书文件。其中,SAN 或主题备用名称是一种结构化方式,用于指示受证书保护的所有域名和 IP 地址。被视为 SAN 的项目的简短列表中包括子域和 IP 地址。该文件的格式如下:

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=yourdomain.com
DNS.2=yourdomain
DNS.3=hostname
EOF

具体实例如下:

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=harbor.project.com
DNS.2=harbor.project
DNS.3=harbor
EOF

配置完成后,使用该文件和openssl为Harbor生成证书:

openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in harbor.project.com.csr \
    -out harbor.project.com.crt

现在,我们就得到了后续需要使用的ca的证书,harbor的私钥和证书。

注意: 如果想使用自己的CA,例如window server中的CA为harbor颁发证书。请直接使用如下的网站生成满足要求的证书请求和私钥文件: https://decoder.link/csr_generator

接下来,我们需要给Harbor容器添加证书。由于在部署容器时使用了卷映射,所以我们直接将Harbor的私钥和证书拷贝到宿主机的/data/cert目录下即可:

cp harbor.project.com.crt /data/cert
cp harbor.project.com.key /data/cert

完成后,转换harbor.project.com.crt为harbor.project.cert, 供 Docker 使用。Docker 守护进程将.crt文件解释为 CA 证书,将.cert文件解释为Harbor证书。

openssl x509 -inform PEM -in harbor.project.com.crt -out harbor.project.com.cert

创建存放验证Harbor容器证书的Docker的目录,并将Harbor的私钥,证书,以及CA的证书拷贝进去:

mkdir -p /etc/docker/certs.d/harbor.project.com/
cp harbor.project.com.cert /etc/docker/certs.d/harbor.project.com/
cp harbor.project.com.key /etc/docker/certs.d/harbor.project.com/
cp ca.crt /etc/docker/certs.d/harbor.project.com/

完成后,在解压后的Harbor目录下,找到如下的harbor.yml文件,并修改其中的内容:

具体参数如下:https://goharbor.io/docs/2.1.0/install-config/configure-yml-file/。配置完成后,依然在解压后的目录下,找到install.sh文件,使用如下命令进行harbor的部署:

sudo ./install.sh

注意,这一步的前提是安装了满足版本要求的docker-compose,否则会出现报错。安装完成后,进行验证容器是否运行成功:

可以看到,这里的状态都是healthy,说明没有问题。接下来,我们及可以通过命令或者游览器进行访问Harbor镜像仓库。

CLI命令如下:

docker login harbor.project.com -u admin -p Harbor12345


接下来是Web登陆,访问宿主机的443 Https端口即可:

步骤二:连接AD域

首先,配置完成自己的AD域,并且创建相应的Harbor登陆用户。如下,我已经配置完成了AD域project.com和用户HarborAdmin

完成AD域配置后,在Harbor中进行连接:

配置AD域连接的参数。具体的参数解释如下: https://docs.bmc.com/docs/fpsc121/ldap-attributes-and-associated-fields-495323340.html

配置完成后可以点击页面下方的测试按钮进行检查是否能正常连接。如果测试成功的话,可以保存配置。

接下来可以在用户管理栏,为HarborAdmin设置管理员权限:

设置完成后,我们就可以logout并使用AD域的账号登陆Harbor仓库了。

步骤三:Push+Pull镜像

CLI命令行登陆Harbor后,可以将我们的镜像Push到私有仓库存储。首先在Harbor中创建私有仓库:

接下来需要给镜像打上tag,tag的格式为:

docker tag SOURCE_IMAGE[:TAG] harbor.project.com/project_images1/IMAGE[:TAG]

例如,我们想要推送nginx:latest镜像到Harbor,则使用如下的命令:

 docker tag nginx:latest harbor.project.com/project_images1/nginx:v1

修改完成后,我们就可以使用下面的命令,推送镜像到Harbor的私有仓库中了:

docker push harbor.project.com/project_images1/nginx:v1

在Harbor中进行检查,可以看到已经推送成功了:

同样的方式可以pull镜像到本地:

docker pull harbor.project.com/project_images1/nginx:v1

参考资料:https://goharbor.io/docs/2.1.0/install-config/

1. git提交分支相关 在本地新建分支,保证和远程分支一样 git checkout -b 分支名 如果分支已存在,只需要切换的话 git checkout 分支名 提交前先把代码
如何用JAVA编写一个简单用户登陆界面? 我想利用JAVA编写一个简单的用户登陆界面,用于信息管理系统的,应该如何着手呢?请高手指教! 搜索更多相关的解决方案: JAVA  界面  编写 
随着各种移动设备的更新换代,移动互联网呈飞速发展状态,移动应用更是呈指数增长。在这种情况下,App的测试需求正逐年增大,已有赶超Web测试的势头。今天,就结合我个人的工作经历,已经相关的专业知识,
这篇文章我是第一次看见,关于app兑换码我也是第一次知道这么用。转给大家,希望能够对大家有所帮助。 App Store兑换码(促销码)是开发者市场营销过程中常常被忽略的一点,开发者并没有挖掘出兑换
目前Win11系统还是拥有周期的更新,并且我们电脑会自动下载这个补丁来让电脑更加安全,但这些升级包并不会在第一时间自行删除,而是会堆积在C盘中,这会导致我们存储空间严重不足,那么要如何去删除呢?
我们在使用电脑的时候有需要切换用户登录,windows10系统下怎么切换用户呢?下面由学习啦小编为你整理了windows10开机界面怎么切换用户的相关方法,希望对你有帮助! windows10
Mysql 更改数据存储目录,只讲干货 1. 找到原存储位置 2.暂停MySQL服务 3.将1查到的文件夹中的data文件剪切到其他盘符 4.更改MySQL服务下的My.ini文件 5.重
关于node的使用已经很久了,使用范围也很广,似乎有前端的地方就有node,那么来思考一个问题,node到底是用来干嘛的呢?本文从五个大的方面对该问题进行了解释。 我们知道node的出现,让前
一、下载最新的软件版本:node # wget [url]ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0rc3.tar.gz[/url]安
目录 第一部分 单项选择题.....................................................................................
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品。未来,我们一起乘风破浪,创造无限可能。 进入“中文语音识别”目录,然后运行下面的命令 pocketsphinx
快来领取红包
您的专属优惠已准备好!
打开微信扫一扫,关注公众号~
SiteMap 网站地图 文本地图 RSS