创建自签名证书,Nginx反向代理Nexus3私服管理Docker镜像

在Nexus3搭建Docker镜像服务器时,需要HTTPS与Nexus3通讯,因此创建自签名的证书,创建方法参考了Nexus官网。

平台:windows 7 64位

私服:Nexus 3.22.0-02

工具:keytool + openssl + PowerShell core 7

步骤如下:

1、修改host文件,建立用于Nexus镜像的域名到IP地址的解析

192.168.*.* local.nexus.com

星号*用实际IP地址替换。Docker所在局域网内的IP地址

2、创建.ps1文件(PowerShell文件)并输入如下命令

$NEXUS_DOMAIN='local.nexus.com';
$NEXUS_IP_ADDRESS='192.168.*.*';
$PASSWORD='Nexus123';

星号*用实际IP地址替换。

3、keytool工具

keytool是Java JDK自带的工具,本文使用的JDK8。

在上一步骤创建的.ps1文件追加如下内容:

keytool -genkeypair -keystore keystore.jks -storepass $PASSWORD -keypass $PASSWORD -alias $NEXUS_DOMAIN -keyalg RSA -keysize 2048 -validity 5000 -dname "CN=*.$NEXUS_DOMAIN, OU=Nexus, O=Nexus, L=Beijing, ST=Beijing, C=CN" -ext "SAN=DNS:$NEXUS_DOMAIN,IP:$NEXUS_IP_ADDRESS" -ext "BC=ca:true";

keytool -exportcert -keystore keystore.jks -alias $NEXUS_DOMAIN -rfc > nexus.cert;

keytool -importkeystore -srckeystore keystore.jks -destkeystore nexus.p12 -deststoretype PKCS12;

keytool -list -keystore nexus.p12 -storetype PKCS12;

4、openssl工具

openssl在Linux较为方便,为了在windows操作系统使用openssl,推荐安装一款方便的软件 Win64 OpenSSL,下载网址:

在上一步骤的.ps1文件追加如下内容:

openssl pkcs12 -nokeys -in nexus.p12 -out nexus.pem;

openssl pkcs12 -nocerts -nodes -in nexus.p12 -out nexus.key;

使用PowerShell执行此.ps1文件。

5、Nginx反向代理

将创建的nexux.pem和nexus.nexus.key文件放到nginx的conf文件夹内,并修改nginx的nginx.conf文件

 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; proxy_send_timeout 120; proxy_read_timeout 300; proxy_buffering off; keepalive_timeout 55; tcp_nodelay on; sendfile on; server { listen *:8443 ssl; server_name local.nexus.com; # allow large uploads of files client_max_body_size 1G; # optimize downloading files larger than 1G #proxy_max_temp_file_size 2G; ssl_certificate nexus.pem; ssl_certificate_key nexus.key; location / { # Use IPv4 upstream address instead of DNS name to avoid attempts by nginx to use IPv6 DNS lookup proxy_pass http://127.0.0.1:8081/; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto "https"; } } server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } 

6、将nginx建立为windows的服务

使用WinSW工具,将工具名改为winsw.exe,并在同一目录下创建winsw.xml文件,winsw.xml内容如下:

<configuration> <id>nginx</id> <name>nginx</name> <description>nginx</description> <executable>%BASE%/nginx.exe</executable> <stopexecutable>%BASE%/nginx.exe -s stop</stopexecutable> <logpath>%BASE%/logs/</logpath> <logmode>roll</logmode> <depend></depend> </configuration>

在与winsw.exe、winsw.xml、nginx.exe同一路径下执行:winsw install nginx

7、开启nexus服务和nginx服务

打开网页:https://local.nexus.com:8443

即可到Nexus的控制台页面。

8、将创建的nexus.p12文件导入到浏览器信任证书中。

9、Nexus控制台页面添加Docker hosted (port:8083)、Docker proxy(port:8084)、Docker Group(port:8082)三个仓库。重启nexus服务

10、Docker配置连接Nexus私服

连接之前配置 dameon.json,路径: /etc/docker/dameon.json ,ip和端口就用私服的地址,以及仓库的端口,例如8082,不是nexus服务的端口8081!配置完后重启docker toolbox。

 { "insecure-registries": ["${ip}:${port}" ] }

$ip=192.168.*.* //自己机器的IP地址

$port=8082 //nexus的group仓库端口

Docker登陆:

docker login -u admin -p admin123 ${ip}:${port} #例如 docker login -u admin -p admin123 192.168.*.*:8082 

完成!

PS:所有路径不要带中文。

如果要删除已经建立的证书,可以使用如下命令:

keytool -delete -alias Tomcat -keystore D:/keystore/test

参考网址:

https://support.sonatype.com/hc/en-us/articles/213465768-SSL-Certificate-Guide?_ga=2.265803654.86722723.1585706254-2043020867.1543311243

https://support.sonatype.com/hc/en-us/articles/217542177?_ga=2.207124506.86722723.1585706254-2043020867.1543311243

https://help.sonatype.com/repomanager3/installation/run-behind-a-reverse-proxy

https://blog.csdn.net/Free_Wind22/article/details/80505065

原文链接:https://blog.csdn.net/PhoenixBorn/article/details/105284715

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享