ml-gradle执行mlDeployRoles忽略HTTPS配置报400错误求助
解决ml-gradle mlDeployRoles任务忽略HTTPS配置的问题
问题现象
将自托管MarkLogic实例迁移至HTTPS后,执行mlDeployRoles部署角色时返回400 The plain HTTP request was sent to HTTPS port错误,其他资源部署任务(如mlDeployDatabase)正常。已尝试配置mlManageScheme=https、mlAdminSimpleSsl=true、hubSsl=true等参数,均未生效。当前环境版本:ml-gradle 4.5.3、mlcp 11.1.0、MarkLogic Server 10.0-11、gradle 7.3.3、openjdk-17-jdk。
排查与解决方案
1. 确认全局配置的完整性
检查gradle.properties中的配置,确保所有与HTTPS相关的参数都正确设置:
mlManageScheme=https mlAdminPort=8001 # MarkLogic默认HTTPS管理端口 mlAdminSimpleSsl=true # 测试环境可启用,跳过证书验证;生产环境建议配置信任库 # 若使用自签名证书,需指定信任库(可选) # mlSslContextPropertiesFile=./ssl/truststore.properties
确保没有遗漏或错误的端口/协议配置,避免HTTP端口与HTTPS端口混淆。
2. 显式为mlDeployRoles任务指定SSL属性
虽然ml-gradle任务默认共享全局配置,但可尝试在build.gradle中显式为mlDeployRoles任务强制设置HTTPS参数:
tasks.named('mlDeployRoles') { scheme = 'https' simpleSsl = true port = project.property('mlAdminPort') }
3. 验证MarkLogic端口配置
登录MarkLogic管理控制台,确认:
- 管理端口(默认8001)已启用HTTPS
- HTTP管理端口(默认8000)已禁用(避免请求被路由到错误端口)
4. 升级ml-gradle版本
ml-gradle 4.5.3可能存在SSL配置相关的已知问题,建议升级至兼容MarkLogic 10的最新稳定版(如5.x系列),新版本通常会修复此类配置继承问题。
5. 检查JVM SSL信任配置
若使用自签名证书,即使开启mlAdminSimpleSsl=true仍可能出现问题:
- 将MarkLogic的自签名证书添加到JVM的
cacerts信任库中 - 或通过
mlSslContextPropertiesFile指定自定义信任库,示例truststore.properties内容:
javax.net.ssl.trustStore=/path/to/truststore.jks javax.net.ssl.trustStorePassword=your-password
内容的提问来源于stack exchange,提问作者Kamil Budziewski
相关产品推荐
相关产品推荐

