如何为单个JFrog Artifactory实例配置两个带独立SSL证书的DNS域名
单个JFrog Artifactory实例配置多域名独立证书的实现方案
方案1:前置反向代理实现(兼容性最高,最常用)
Artifactory内置的Tomcat服务原生仅支持单组证书配置,因此行业通用的解法是在Artifactory前端新增反向代理层,由反向代理处理SSL卸载、SNI多域名证书匹配,所有请求转发到同一后端Artifactory实例即可:
- 提前准备两个域名对应的完整PEM证书链、KEY密钥文件,存放到反向代理服务器的专属证书目录,例如
/etc/nginx/certs/下分别命名为domain1.crt、domain1.key、domain2.crt、domain2.key - 以Nginx反向代理为例,分别编写两个监听443端口的server配置块,每个块分别绑定对应域名、关联对应证书配置,所有location块的代理目标统一指向Artifactory的内部服务地址(默认内部HTTP端口为8082)
- 每个server块中新增自定义请求头配置,指定对应域名的基础地址:
proxy_set_header X-JFrog-Override-Base-Url https://你的对应域名;,该配置会让Artifactory返回的页面、仓库链接自动适配当前访问的域名,不会跳转至固定的单域名 - 配置完成后重载反向代理服务,分别访问两个域名验证证书匹配度、页面加载、仓库推拉功能是否正常。
方案2:原生多域名配置(适用Artifactory 7.49及以上版本)
7.49版本之后Artifactory原生支持SNI多域名证书配置,无需额外部署反向代理:
- 编辑Artifactory配置文件
$JFROG_HOME/artifactory/var/etc/system.yaml,添加多组SNI主机配置,示例如下:
artifactory: tomcat: connector: https: enabled: true sni: enabled: true hosts: - serverName: "domain1.com" certificateKeyFile: "/绝对路径/domain1.key" certificateFile: "/绝对路径/domain1.pem" - serverName: "domain2.com" certificateKeyFile: "/绝对路径/domain2.key" certificateFile: "/绝对路径/domain2.pem"
- 保存配置后重启Artifactory服务即可生效。
注意事项
- 采用反向代理方案时,需要关闭Artifactory HTTPS端口的公网暴露权限,所有外部访问统一走反向代理的443端口,避免安全隐患
- 配置完成后需分别测试Maven、Docker、Helm等各类私有仓库的推拉功能,确保仓库地址域名与访问域名一致,无证书不匹配报错。
内容的提问来源于stack exchange,提问作者user245011
相关产品推荐
相关产品推荐

