当前位置: 首页 > article >正文

保姆级教程:用Docker Compose和Nginx给内网Nexus仓库上HTTPS(自签证书避坑指南)

内网Nexus私有仓库HTTPS全栈实战从Docker部署到证书信任闭环当开发团队规模超过10人时私有制品仓库就成了刚需。上周帮某金融客户部署内网Nexus时发现Maven 3.8.1强制HTTPS的策略让很多工程师措手不及——内网没有公网域名Lets Encrypt证书无法签发而自签证书又面临浏览器和Java双重不信任的困境。本文将用一套经过生产验证的方案带你打通从Docker Compose部署到全栈证书信任的完整链路。1. 为什么内网HTTPS方案如此特殊公网环境申请SSL证书只需验证域名所有权但内网环境面临三个独特挑战IP证书的局限性主流CA机构不再签发纯IP证书Lets Encrypt明确要求域名验证信任链断裂自签证书不被操作系统和Java信任导致Chrome显示不安全连接Maven构建报PKIX path validation failed错误证书分发成本每台开发机、构建节点都需要手动信任证书实测发现仅配置Nginx的SSL还不够必须处理以下信任场景场景影响范围解决方案浏览器访问Nexus UI开发/运维人员安装CA证书到系统信任库Maven拉取依赖CI/CD流水线配置Java信任库Docker镜像推送/拉取容器化环境配置Docker守护进程信任2. 极简Docker Compose部署方案新建nexus-ssl目录作为项目根目录其结构应该是这样的nexus-ssl/ ├── docker-compose.yml ├── nginx/ │ ├── conf.d/ │ │ └── nexus.conf │ └── ssl/ ├── nexus-data/关键配置要点在docker-compose.ymlversion: 3.8 services: nexus: image: sonatype/nexus3:3.58.1 container_name: nexus restart: unless-stopped environment: - INSTALL4J_ADD_VM_PARAMS-Dnexus-args${NEXUS_CONTEXT} volumes: - ./nexus-data:/nexus-data networks: - nexus-net nginx: image: nginx:1.25-alpine ports: - 8443:8443 volumes: - ./nginx/conf.d:/etc/nginx/conf.d - ./nginx/ssl:/etc/nginx/ssl depends_on: - nexus networks: - nexus-net networks: nexus-net: driver: bridge这里有两个易错点需要特别注意数据卷权限首次启动前执行mkdir -p nexus-data chown -R 200:200 nexus-data否则会遇到容器启动失败日志显示Unable to access /nexus-data上下文路径如果希望通过https://ip:8443/repository访问而非https://ip:8443/nexus/repository需要设置环境变量export NEXUS_CONTEXTnexus-context/启动服务后用docker-compose logs -f nexus查看初始密码docker-compose up -d docker-compose exec nexus cat /nexus-data/admin.password3. 智能证书管理mkcert实战传统OpenSSL生成证书需要10步骤而mkcert通过自动化解决了三个核心痛点自动生成本地CA无需手动配置openssl.cnf一键信任自动安装CA到系统证书库IP证书支持直接为内网IP签发证书安装mkcertMac环境brew install mkcert为内网IP生成证书mkdir -p nginx/ssl cd nginx/ssl mkcert -install mkcert 192.168.1.100 ::1生成的证书会自动包含SAN扩展这是现代浏览器的强制要求。检查证书内容openssl x509 -in 192.168.1.1001.pem -text -noout关键输出应包含X509v3 Subject Alternative Name: IP Address:192.168.1.100, IP Address:0:0:0:0:0:0:0:14. Nginx反向代理的SSL配置艺术在nginx/conf.d/nexus.conf中配置server { listen 8443 ssl; server_name 192.168.1.100; ssl_certificate /etc/nginx/ssl/192.168.1.1001.pem; ssl_certificate_key /etc/nginx/ssl/192.168.1.1001-key.pem; # 禁用不安全的协议 ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; location / { proxy_pass http://nexus:8081; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; # 解决WebSocket连接问题 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; } }重启Nginx后测试配置docker-compose exec nginx nginx -t docker-compose restart nginx5. 全栈证书信任方案浏览器信任配置mkcert已自动完成90%的工作剩余步骤导出CA证书mkcert -CAROOT会显示类似/Users/xxx/Library/Application Support/mkcert的路径其中的rootCA.pem就是CA证书将rootCA.pem分发给团队成员各平台安装方式Windows双击证书 → 选择本地计算机 → 存入受信任的根证书颁发机构Mac钥匙串访问 → 系统 → 导入证书 → 始终信任Linuxsudo cp rootCA.pem /usr/local/share/ca-certificates/ sudo update-ca-certificatesJava信任链配置Maven依赖拉取失败的根本原因是Java有自己的证书库。找到JRE的cacerts位置# 对于JDK 11 java -XshowSettings:properties -version 21 | grep java.home然后导入CA证书keytool -importcert \ -alias nexus-ca \ -file $(mkcert -CAROOT)/rootCA.pem \ -keystore $JAVA_HOME/lib/security/cacerts \ -storepass changeit \ -noprompt特别注意如果使用Dockerized构建环境需要在构建镜像时执行此操作。例如在Jenkins Agent的Dockerfile中加入RUN apt-get update apt-get install -y libnss3-tools \ mkcert -install \ keytool -importcert ... # 同上6. Maven客户端的特殊配置即使服务器配置正确客户端仍需要额外处理settings.xml配置镜像mirror idnexus/id mirrorOf*/mirrorOf urlhttps://192.168.1.100:8443/repository/maven-public//url /mirror解决SNI问题旧版Java对IP地址的SNI支持不完善需在MAVEN_OPTS中添加export MAVEN_OPTS-Djsse.enableSNIExtensionfalse测试连接mvn help:effective-settings -DshowPasswordstrue7. 进阶证书的自动化分发对于50节点的环境手动安装证书不现实。推荐方案Ansible批量部署- name: Install CA cert ansible.builtin.copy: src: rootCA.pem dest: /usr/local/share/ca-certificates/nexus-ca.crt become: yes - name: Update certs ansible.builtin.command: update-ca-certificates become: yesPuppet配置管理file { /usr/local/share/ca-certificates/nexus-ca.crt: source puppet:///modules/nexus/rootCA.pem, notify Exec[update-ca-certificates], } exec { update-ca-certificates: command /usr/sbin/update-ca-certificates, refreshonly true, }Terraform云初始化resource aws_instance builder { user_data -EOF #!/bin/bash curl -o /tmp/rootCA.pem http://nexus/rootCA.pem cp /tmp/rootCA.pem /usr/local/share/ca-certificates/ update-ca-certificates EOF }8. 监控与维护证书管理不是一劳永逸的需要建立维护机制证书过期监控echo CA证书有效期 openssl x509 -in $(mkcert -CAROOT)/rootCA.pem -noout -dates echo 站点证书有效期 openssl x509 -in nginx/ssl/192.168.1.1001.pem -noout -dates自动续期方案# 提前30天检测 if openssl x509 -checkend 2592000 -noout -in cert.pem; then echo 证书即将过期执行续期... mkcert -cert-file cert.pem -key-file key.pem 192.168.1.100 ::1 docker-compose restart nginx fi证书吊销处理# 生成CRL证书吊销列表 openssl ca -config openssl.cnf -gencrl -out crl.pem # Nginx配置CRL检查 ssl_crl /path/to/crl.pem;

相关文章:

保姆级教程:用Docker Compose和Nginx给内网Nexus仓库上HTTPS(自签证书避坑指南)

内网Nexus私有仓库HTTPS全栈实战:从Docker部署到证书信任闭环 当开发团队规模超过10人时,私有制品仓库就成了刚需。上周帮某金融客户部署内网Nexus时,发现Maven 3.8.1强制HTTPS的策略让很多工程师措手不及——内网没有公网域名,Le…...

Excel VBA宏实战:一键按多列条件拆分工作表

1. 为什么需要按多列条件拆分工作表? 相信很多处理过Excel数据的朋友都遇到过这样的场景:领导突然丢给你一份包含全校学生成绩的表格,要求你按照"班级学科"的组合条件拆分成多个独立的工作表。手动操作时,你需要反复筛选…...

macOS菜单栏终极管理方案:Ice如何重塑你的数字工作空间

macOS菜单栏终极管理方案:Ice如何重塑你的数字工作空间 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice 核心关键词:macOS菜单栏管理,Ice菜单栏工具 长尾关键词&am…...

电机控制新手必看:半桥栅极驱动芯片选型避坑指南(附英飞凌型号推荐)

电机控制新手必看:半桥栅极驱动芯片选型避坑指南(附英飞凌型号推荐) 在电机控制系统的设计中,半桥栅极驱动芯片的选择往往成为新手工程师的第一个技术挑战。我曾见过不少项目因为驱动芯片选型不当,导致电机运行不稳定…...

离线环境下的华为NPU卡Ubuntu驱动安装全攻略:从依赖包下载到错误排查

1. 离线安装华为NPU卡驱动的核心挑战 在封闭的企业内网环境中安装华为NPU卡驱动,就像在没有工具箱的情况下组装家具。我最近在客户数据中心遇到的实际案例是:一台用于AI推理的Ubuntu 18.04服务器被部署在金融行业的隔离网络区域,既不能连接外…...

MATLAB代码:考虑绿证交易与综合需求响应的综合能源系统优化调度“注意:引号内文字为返回的标题

MATLAB代码:计及绿证交易和综合需求响应的综合能源系统优化调度 关键词:绿证交易 综合需求响应 综合能源系统 优化调度 仿真平台: matlabyalmipcplex 主要内容:代码针对综合能源系统低碳运行和源荷互动,考虑可再生能源电力消纳责…...

Nunchaku-flux-1-dev在网络安全中的应用:生成攻击路径与防御示意图

Nunchaku-flux-1-dev在网络安全中的应用:生成攻击路径与防御示意图 最近和几个做安全的朋友聊天,他们都在抱怨同一件事:写安全报告太痛苦了。不是分析过程有多难,而是要把那些复杂的攻击链、零散的安全事件,画成一张能…...

金融交易核心-FIX协议关键字段解析与应用实战

1. FIX协议基础与金融交易核心地位 FIX(Financial Information eXchange)协议就像金融交易领域的"普通话",它让全球不同交易所、券商和投资机构能够用同一种电子语言沟通。想象一下,如果没有统一协议,纽约的…...

5分钟搞定Node.js+ws搭建实时聊天室(附完整前端代码)

5分钟实现高互动WebSocket聊天室:Node.jsws全栈实战指南 从零构建实时通信系统 在数字化协作时代,实时通信已成为在线应用的基础能力。想象这样一个场景:团队远程协作时,成员间的消息需要毫秒级同步;在线教育平台中&am…...

Sora 2官方API刚开放,我就用它给飞书文档里的产品说明配上了动态视频

Sora 2 API实战:如何为飞书文档中的产品说明自动生成动态解说视频 在当今快节奏的商业环境中,产品文档和说明的生动呈现变得越来越重要。静态的文字和图片已经无法满足用户对信息获取的需求,而动态视频则能更直观、更高效地传达复杂的产品功…...

KernelSU低版本内核适配实战指南:突破Linux 4.14+设备的技术瓶颈

KernelSU低版本内核适配实战指南:突破Linux 4.14设备的技术瓶颈 【免费下载链接】KernelSU A Kernel based root solution for Android 项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU 问题溯源:旧内核设备的Root困境 在Android设备…...

颠覆素材管理:3步搞定全网资源下载

颠覆素材管理:3步搞定全网资源下载 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader res-downloader是一款集多平台…...

Smithbox终极指南:零基础打造你的专属魂系列游戏世界

Smithbox终极指南:零基础打造你的专属魂系列游戏世界 【免费下载链接】Smithbox Smithbox is a modding tool for Elden Ring, Armored Core VI, Sekiro, Dark Souls 3, Dark Souls 2, Dark Souls, Bloodborne and Demons Souls. 项目地址: https://gitcode.com/g…...

如何用Diablo Edit2解决暗黑破坏神II角色编辑难题?完整指南

如何用Diablo Edit2解决暗黑破坏神II角色编辑难题?完整指南 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 暗黑破坏神II作为一款经典的动作角色扮演游戏,其复杂的角色养成…...

从选型到贴片:启英泰伦CI13XX芯片硬件设计避坑指南(附PCB布局建议)

启英泰伦CI13XX芯片硬件设计实战:从选型到量产的工程化解决方案 在智能语音硬件开发领域,启英泰伦CI13XX系列芯片凭借其高度集成的BNPU V3神经网络处理器和丰富的接口资源,已成为离线语音识别方案的热门选择。然而,从芯片选型到最…...

别再手动一个个点了!用Labelme批量标注关键点数据的3个高效技巧(附快捷键设置)

别再手动一个个点了!用Labelme批量标注关键点数据的3个高效技巧(附快捷键设置) 在计算机视觉项目的关键点标注任务中,效率往往是决定项目进度的关键因素。我曾参与过一个包含5000张图像的人体姿态估计项目,最初采用传…...

Win11Debloat终极指南:快速清理Windows 11系统,性能提升51%的免费神器

Win11Debloat终极指南:快速清理Windows 11系统,性能提升51%的免费神器 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other c…...

Intv_AI_MK11 Python数据分析搭档:环境配置与自动化脚本生成

Intv_AI_MK11 Python数据分析搭档:环境配置与自动化脚本生成 1. 为什么需要AI辅助的数据分析环境 数据分析师每天要处理大量重复性工作:数据清洗、报告撰写、图表生成。这些工作既耗时又容易出错。Intv_AI_MK11作为新一代AI助手,可以帮你自…...

企业网站关键词 SEO 优化大概需要多少费用

企业网站关键词 SEO 优化大概需要多少费用 在当今数字化经济时代,企业网站的SEO优化已经成为了提升网站流量和品牌知名度的重要手段。企业网站关键词 SEO 优化大概需要多少费用呢?这个问题的答案并不简单,因为涉及到多方面的因素。本文将详细…...

千问3.5-9B中文优化:提升OpenClaw本地化任务准确率

千问3.5-9B中文优化:提升OpenClaw本地化任务准确率 1. 问题背景与优化动机 最近在将OpenClaw接入本地部署的千问3.5-9B模型时,发现它在处理中文环境下的自动化任务时表现不稳定。特别是当涉及到中文文件路径操作、网页内容解析等场景时,经常…...

2025届学术党必备的AI辅助写作工具推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 维普AIGC检测系统专门针对学术文本里人工智能生成的内容来开展识别 , 用户在提交…...

抖音下载器技术解构:多策略协同架构与智能反爬机制深度剖析

抖音下载器技术解构:多策略协同架构与智能反爬机制深度剖析 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …...

Scrapy框架突破中国裁判文书网多重反爬机制的Python爬虫解决方案

Scrapy框架突破中国裁判文书网多重反爬机制的Python爬虫解决方案 【免费下载链接】Wenshu_Spider :rainbow:Wenshu_Spider-Scrapy框架爬取中国裁判文书网案件数据(2019-1-9最新版) 项目地址: https://gitcode.com/gh_mirrors/wen/Wenshu_Spider 在司法数据挖掘与法律科技…...

STM32CubeMX实战:如何用通用定时器精准实现微秒级延时(附DHT11读取示例)

STM32CubeMX实战:通用定时器实现微秒级延时的工程化解决方案 在嵌入式开发中,精确的时序控制往往是项目成功的关键。许多传感器如DHT11温湿度模块、超声波测距模块HC-SR04等,都需要微秒级精度的延时操作。然而,STM32CubeMX默认提…...

Python实战:用PyWavelets实现小波降噪(附软硬阈值函数对比代码)

Python实战:用PyWavelets实现小波降噪(附软硬阈值函数对比代码) 在信号处理领域,噪声就像不请自来的客人,总是干扰着我们想要获取的真实信息。想象一下医生试图从嘈杂的心电图中诊断病情,或是摄影师处理夜间…...

告别混乱!SpringBoot3 + Knife4j 4.4.0接口文档管理:从基础配置到高级分组与权限控制

SpringBoot3与Knife4j 4.4.0实战:企业级API文档架构设计与安全管控 当微服务架构中的API数量突破三位数时,开发团队往往会陷入接口管理的泥潭。某电商平台的后台系统曾因文档混乱导致新成员需要两周才能熟悉支付模块的接口调用规范,而错误调…...

在RK3588上搞定XDMA AXI-Stream回环测试:从Verilog到Rust的完整流程与避坑指南

RK3588平台XDMA AXI-Stream全链路开发实战:从FPGA设计到Rust测试的工程化实现 当我们需要在嵌入式系统中实现高速数据交换时,PCIeAXI-Stream的组合无疑是黄金搭档。RK3588作为一款高性能处理器,配合FPGA的灵活可编程特性,能够构建…...

ATPG约束C/T/O/DX傻傻分不清?一张图帮你搞定芯片测试中的cell constraint

ATPG约束C/T/O/DX全解析:芯片测试工程师的速查手册 刚接触ATPG工具的新手工程师们,是否曾被手册里那些神秘的字母组合搞得晕头转向?C、T、O、DX...这些看似简单的缩写背后,隐藏着对测试覆盖率的关键影响。本文将用最直观的方式&a…...

如何用快马AI平台十分钟快速构建你的第一个Android应用原型

最近在尝试用AI工具快速构建Android应用原型,发现InsCode(快马)平台特别适合做这种快速验证。今天就用它来演示如何十分钟搭建一个天气应用原型,整个过程比传统开发方式高效太多了。 明确原型需求 首先梳理出这个天气应用需要三个核心模块:首…...

终极Windows 11优化指南:如何用Win11Debloat让电脑提速70%的完整教程

终极Windows 11优化指南:如何用Win11Debloat让电脑提速70%的完整教程 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to de…...