You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Tomcat原有server.jks证书为Consul配置HTTPS服务

从Tomcat的server.jks提取证书配置Consul HTTPS服务操作步骤

前置依赖

  • 本地已安装JDK(包含keytool命令行工具)
  • 本地已安装OpenSSL工具

证书提取操作

首先在终端进入server.jks所在目录,按顺序执行以下命令:

  1. 将JKS格式证书转换为OpenSSL可处理的PKCS12格式
keytool -importkeystore -srckeystore server.jks -srcstoretype JKS -deststoretype PKCS12 -destkeystore server.p12

执行时需要输入原server.jks的存储密码,同时按提示设置PKCS12文件的导出密码(后续步骤会用到)。

  1. 创建证书存放目录
mkdir -p cert
  1. 提取CA根证书(对应配置中ca_file)
openssl pkcs12 -in server.p12 -cacerts -nokeys -out cert/ca.pem

输入上一步设置的PKCS12导出密码完成导出。

  1. 提取服务端公钥证书(对应配置中cert_file)
openssl pkcs12 -in server.p12 -clcerts -nokeys -out cert/server.pem
  1. 提取服务端私钥(对应配置中key_file)
openssl pkcs12 -in server.p12 -nocerts -nodes -out cert/serverkey.pem

参数-nodes表示不对私钥做加密存储,避免Consul启动时需要手动输入私钥密码。

  1. 验证证书与私钥匹配性(可选,推荐执行)
    分别执行以下两条命令,输出的MD5值完全一致则说明证书和私钥匹配:
openssl x509 -noout -modulus -in cert/server.pem | openssl md5
openssl rsa -noout -modulus -in cert/serverkey.pem | openssl md5

Consul配置调整

在原server.conf配置中新增三个证书路径的顶级配置项,注意路径要和实际存放位置一致(原配置中key_file开头的斜杠代表根目录,如为相对路径需删除斜杠),调整后的完整配置如下:

{
    "bootstrap": true,
    "server": true,
    "datacenter": "dc1",
    "data_dir": "data",
    "ca_file": "cert/ca.pem",
    "cert_file": "cert/server.pem",
    "key_file": "cert/serverkey.pem",
    "verify_incoming": true,
    "verify_outgoing": true,
    "verify_server_hostname": true,    
    "auto_encrypt": {
       "allow_tls": true
    },
    "log_level": "INFO",
    "enable_agent_tls_for_checks": true,
    "enable_syslog": false,
    "ui_config": {
      "enabled": true
    },
    "ports": {
       "http": -1,
       "https": 8500
    }
}

权限配置与启动验证

  1. 配置证书权限,避免私钥权限过高引发启动报错
chmod 700 cert
chmod 600 cert/serverkey.pem

注意需将证书目录和文件的所属用户调整为Consul服务的运行用户。

  1. 启动Consul服务
consul agent -config-file server.conf
  1. 验证HTTPS服务可用性
curl --cacert cert/ca.pem https://<Consul服务端IP/域名>:8500/v1/status/leader

正常返回集群leader地址则说明配置生效。

注意事项

  • 需确保原Tomcat证书的SAN(使用者备用名称)字段包含Consul服务端的IP或域名,否则开启verify_server_hostname参数后会出现主机名校验失败的错误。

内容的提问来源于stack exchange,提问作者jonas.lima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:30:00