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

如何验证Apex(Force.com)调用AWS服务器的HTTP请求安全性?

在Apex(Force.com)中验证AWS服务器证书有效性与请求加密的方法

我来帮你梳理下在Apex里处理这类REST API调用的安全验证逻辑——毕竟不像浏览器有直观的锁图标,得从平台机制和代码层面入手:

一、先确认请求已加密:强制使用HTTPS

Apex对HTTP请求有严格的安全限制:

  • 生产环境中默认禁止HTTP明文请求,只能用HTTPS;沙盒环境虽然可以临时开启HTTP,但绝对不推荐在正式场景使用。
  • 你要确保请求的端点URL是https://开头,甚至可以在代码里加一层校验,避免误写:
String awsEndpoint = 'https://your-aws-server.example.com/api/v1/resource';
if (!awsEndpoint.toLowerCase().startsWith('https://')) {
    throw new CustomException('必须使用HTTPS协议确保请求加密传输');
}

只要用了HTTPS,请求从Apex发出到AWS服务器的整个链路就是通过TLS/SSL加密的,这一点可以放心。

二、验证服务器证书有效性:依赖Apex默认机制+可选配置

Apex在发起HTTPS请求时,会自动验证服务器的SSL证书链,这是平台内置的安全逻辑:

1. 公共CA颁发的证书(比如AWS ACM、Let's Encrypt)

如果你的AWS服务器用的是主流公共CA颁发的证书,Salesforce的信任存储已经包含这些CA的根证书,所以Apex会自动通过验证:

  • 如果请求没有抛出System.CalloutException(错误信息类似“无法找到请求目标的有效证书路径”或“证书中的主机名不匹配”),就说明证书是有效的,服务器身份可信。
  • 举个例子,如果证书过期或者域名不匹配,你会收到明确的异常提示,这时候就需要检查AWS服务器的证书配置了。

2. 自签名/私有CA证书(特殊场景)

如果你的AWS服务器用的是自签名证书或者私有CA颁发的证书,Salesforce默认不会信任,这时候需要手动导入证书到Salesforce:
推荐用命名凭据来管理(比远程站点设置更安全):

  1. 导出AWS服务器的PEM格式证书;
  2. 进入Salesforce设置 → 安全 → 命名凭据,新建一个命名凭据,填写AWS服务器的端点URL,然后在“证书”字段上传你的PEM证书;
  3. 在Apex代码中通过命名凭据发起请求:
Http http = new Http();
HttpRequest request = new HttpRequest();
// 用命名凭据的别名代替直接写URL
request.setEndpoint('callout:Your_AWS_Named_Credential/api/v1/resource');
request.setMethod('POST');
// 其他请求配置...
HttpResponse response = http.send(request);

这样Apex就会用你上传的证书来验证服务器身份,确保证书有效。

3. 手动预校验证书(可选)

如果你想提前确认证书的细节(比如有效期、域名匹配),可以用openssl命令行工具先检查AWS服务器的证书:

openssl s_client -connect your-aws-server.example.com:443

这个命令会输出证书的完整信息,包括颁发机构、有效期、绑定的域名等,你可以提前确认这些信息是否符合预期,再在Apex中发起请求。

三、额外的安全加固建议

  • 把AWS服务器域名添加到远程站点设置中:这是Apex发起外部请求的必要前提,同时也能防止请求被发送到恶意站点;
  • 确认AWS服务器的TLS版本:Salesforce只支持TLS 1.2及以上版本,所以要确保AWS的负载均衡器或服务器配置了TLS 1.2/1.3,避免使用过时的TLS 1.0/1.1;
  • 避免硬编码URL:用命名凭据或自定义标签管理端点,既安全又便于维护。

内容的提问来源于stack exchange,提问作者Jorjani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:51:02