在微服务架构中,服务间通信的SSL/TLS配置至关重要。chls.pro/ssl通常指Charles Proxy的SSL代理功能,用于监控和调试HTTPS流量。以下是关键配置步骤:

1. 基础证书配置

  • 安装根证书
    在每台运行微服务的机器上安装Charles根证书:
    # Linux示例
    sudo cp charles-proxy-ca.crt /usr/local/share/ca-certificates/
    sudo update-ca-certificates
    

  • 验证证书信任链
    确保服务使用的语言环境信任该证书(如Java需更新cacerts):
    keytool -importcert -keystore $JAVA_HOME/lib/security/cacerts -file charles-proxy-ca.crt
    

2. 服务端配置

# Spring Cloud示例 (application.yml)
server:
  ssl:
    key-store: classpath:keystore.jks
    key-store-password: ${KEYSTORE_PASS}
    key-alias: my-service
    trust-store: classpath:truststore.jks # 包含Charles证书
    trust-store-password: ${TRUSTSTORE_PASS}

3. 客户端流量代理

  • 环境变量注入
    通过启动参数强制流量经Charles代理:
    java -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=8888 -jar service.jar
    

  • 编程式配置(Go示例)
    func buildHTTPClient() *http.Client {
      proxyURL, _ := url.Parse("http://127.0.0.1:8888")
      return &http.Client{
        Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)}
      }
    }
    

4. 双向TLS验证(进阶)

若需服务间双向认证,添加客户端证书配置:

# Python requests示例
response = requests.post(
  "https://target-service",
  cert=("/path/client.crt", "/path/client.key"),
  verify="/path/charles-ca.crt"  # 信任Charles的CA
)

5. 调试与验证

  • 在Charles中启用 SSL Proxying Settings
  • 检查流量解密状态:
    • ✅ 成功:HTTPS请求显示明文内容
    • ❌ 失败:检查证书信任链或代理设置

注意事项

  • 仅限开发/测试环境使用,生产环境需移除代理配置
  • 容器化部署时,需将证书挂载到容器内
  • 定期更新Charles根证书(有效期通常1-2年)

通过以上配置,可安全捕获服务间通信流量进行调试,同时保持TLS加密完整性。

更多推荐