内容提要
本文介绍了搭建私有仓库的好处和坑,并提供了三种解决方案。最复杂的方案是内网搭建服务,使用自签证书和https协议访问。文章还详细介绍了如何搭建私有仓库和使用nginx代理SSL。最后,文章讲解了如何自签SSL证书并添加信任,以及如何在Springboot集成中配置私有仓库和发布到远程仓库。
延伸解读
Maven 3.8.1 的 HTTPS 强制要求与应对
从 Maven 3.8.1 开始,默认禁止使用 HTTP 协议拉取依赖,只允许 HTTPS。这意味着在内网搭建 Nexus 私有仓库时,必须配置 HTTPS,否则需要修改一系列配置。对于没有公网域名或 IP 的内网环境,无法申请公网证书,因此只能使用自签证书。这增加了证书生成和信任配置的步骤,但也是目前最可行的方案。
三种私有仓库搭建方案对比
文章给出了三种方案:最简单的是公网搭建服务,内网通过域名访问,直接使用公网证书;稍复杂的是内网搭建服务,但使用内网域名和公网证书,依赖内网 DNS 统一管理;最复杂的是内网搭建服务,使用 IP 和自签证书,需要手动为浏览器和 Java 添加信任。选择哪种方案取决于内网是否有域名管理以及是否愿意接受自签证书的维护成本。
自签证书的信任机制与简化工具
自签证书需要手动添加到信任库。信任的核心是根证书(CA),一旦根证书被信任,由其签发的所有证书都会自动被信任。文章推荐使用 mkcert 工具简化证书生成和安装过程,mkcert install 会自动将根证书添加到系统信任库。对于 Java,则需要使用 keytool 命令将根证书导入到 JDK 的 cacerts 信任库中,否则 Maven 无法通过 HTTPS 访问私有仓库。
Spring Boot 项目集成私有仓库的配置要点
在 Spring Boot 项目中集成私有 Nexus 仓库,需要在 pom.xml 中配置 distributionManagement 用于发布,以及 repositories 用于拉取依赖。发布时使用 mvn deploy 命令,拉取时使用 mvn clean package。注意 URL 必须使用 HTTPS,且如果使用自签证书,需确保 Java 信任该证书。此外,发布和拉取可能需要配置认证信息,但文章未提及,需根据 Nexus 权限设置补充。
Q&A
搭建私有仓库的主要好处是什么?
私有仓库的好处包括版本控制、发布内容控制和权限控制。
如何在内网搭建 Nexus 仓库并配置 SSL?
在内网搭建 Nexus 仓库时,需要使用自签证书并配置 HTTPS,具体步骤包括使用 Docker 部署 Nexus 和配置 Nginx 代理 SSL。
自签证书的信任如何添加?
自签证书需要手动创建并添加信任,主要是信任根证书,使用 keytool 或 mkcert 来完成信任添加。
在 Spring Boot 中如何配置使用私有仓库?
在 Spring Boot 中,需要在 pom.xml 中配置私有仓库的远端地址,并确保使用 HTTPS 和自签证书。
使用 Docker 部署 Nexus 的基本步骤是什么?
使用 Docker 部署 Nexus 的步骤包括创建文件夹、编写 docker-compose.yml 文件并执行 docker-compose up -d 启动服务。
如何将证书分享给其他人?
可以通过导出 CA 公钥证书并发送给他人,接收者需双击证书文件进行安装和添加信任。