文章目录

一、在容器中安装运行nexus3

为了方便起见,这里使用脚本来处理安装运行。 在一个空目录中新建一个shell脚本文件,比如gen.sh,内容如下

 1# 所有操作在子目录中完成
 2mkdir -p output
 3cd output
 4# 创建辅助文件
 5echo subjectAltName=IP:192.168.1.8 > extfile.cnf
 6# 生成ca证书
 7openssl genrsa -out ca.key 2048
 8openssl req -x509 -new -nodes -key ca.key -days 10000 -out ca.crt
 9# 如果不想交互输入证书的国家,城市,公司名等等信息,可以在上面的命令加上参数:-subj "/CN=*"
10# 生成server证书
11openssl genrsa -out server.key 2048
12openssl req -new -key server.key -subj "/CN=192.168.1.8" -out server.csr
13openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile exefile.cnf -out server.crt -days 10000
14# 将证书导出成pkcs格式
15# 这里需要输入密码  输入“password”,如果不用这个,需要修改镜像里的${jetty.etc}/jetty-https.xml对应的password
16openssl pkcs12 -export -out keystore.pkcs12 -inkey server.key -in server.crt
17# 复制需要的文件到上层目录
18cp keystore.pkcs12 ..
19# 复制ca.crt到系统
20sudo cp ca.crt /usr/local/share/ca-certificates/nexus3.crt
21# 更新证书
22sudo update-ca-certificates
23# 删除辅助文件
24rm extfile.cnf
25cd ..
26
27# 构建镜像
28sudo podman build -t nexus3-https:v1 .
29# 创建主机映射目录
30sudo mkdir -p /nsd/nexus
31sudo chown 200:200 /nsd/nexus -R
32# 启动镜像
33# 8433作为nexus3 web的https端口
34# 8081作为nexus3 web的http端口
35# 5051作为docker 本地仓库的端口
36# 5052作为docker 代理的端口
37sudo podman run -d --restart=always --rm -p 8443:8443 -p 8081:8081 -p 5051:5051 -p 5052:5052 --name nexus3 -v /nsd/nexus:/nexus-data nexus3-https:v1

此脚本中复制ca.crt到系统中的路径为ubuntu 21.10中的路径,其它版本的Linux会有一些差异。 ubuntu存放证书的目录有3个:

  • /usr/local/share/ca-certificates

  • /usr/share/ca-certificates

  • /etc/ssl/certs

这三个的级别是越来越高,/etc/ssl/certs是系统级的,如果放在/etc/ssl/c