我正在开发一个将连接到salesforce帐户的poc。 mule版本是6.3.2,销售力版本是6.3.2。直到2 [![在此输入图像描述] [1]] [1]天后它工作正常。
我开始知道,上周末销售人员将TLS从1.0升级到1.1。当我测试我的流程时得到以下异常:
根异常堆栈跟踪: [UnexpectedErrorFault [ApiFault exceptionCode ='UNSUPPORTED_CLIENT' exceptionMessage ='此组织中已禁用TLS 1.0。使用https连接到Salesforce时,请使用TLS 1.1或更高版本。 ] ]
当我看到mule文档时,它说salesforce连接器7.1.2解决了这个问题,我在工作室更新了我的连接器,并重新尝试了无效的方案。
有人可以帮我解决这个问题。
此致 维克拉姆
答案 0 :(得分:0)
我以前必须在应用程序设置中设置以下属性:
https.protocols = TLSv1.1,TLSv1.2
-Dhttps.protocols = TLSv1.1,TLSv1.2在我的wrapper.conf for Mule standalone。
答案 1 :(得分:0)
您可以将配置放在tls-default.conf
MULE_ESB/conf/
文件夹中
然后把值放在里面,如下所示:
enabledProtocols=TLSv1.1, TLSv1.2
enabledCipherSuites=TLS_KRB5_WITH_3DES_EDE_CBC_MD5, TLS_KRB5_WITH_RC4_128_SHA, SSL_DH_anon_WITH_DES_CBC_SHA
或者,如果您想从anypoint studio进行测试,只需创建tls-default.conf并放在resources
文件夹下
我可以添加的另一个信息是尝试将您的网址目的地输入https://www.ssllabs.com/ssltest/,以确保您的端点启用TLSv1.1或者也可以启用chiper套件
答案 2 :(得分:0)
以下是我发布的答案。
我在我的系统中解决了它。
当它在Anypoint中附加的运行时中不起作用时 工作室然后按照以下步骤操作。
Navigate to the Anypoint studio installation directory Search for "tls-default.conf" in the folder. This will show you all the files for all the Runtimes that you have installed. there will be a property "enabledProtocols" make sure that it contains the TLSv1 in it as below enabledProtocols=TLSv1,TLSv1.1,TLSv1.2
以上内容应适用于云中心(大部分时间已经存在 启用)或内部部署系统。
答案 3 :(得分:0)
Salesforce现在是disabling TLS 1.0, forcing TLS 1.1 or higher。
对于Java版本> = 1.8,这不是问题,但对于早期版本,您需要设置SSLContext
。这个解决方案对我有用:
if (Double.parseDouble(Runtime.class.getPackage().getSpecificationVersion()) <= 1.7) // Java versions > 1.7 are compatible with TLS 1.1 or higher by default - we want TLSv1.2 for our needs
setSSLContext(SSLContext.getInstance(SSL_VERSION_TO_USE_FOR_SALESFORCE_LOGIN));
private static void setSSLContext(SSLContext context) {
SSLContext.setDefault(context);
try {
/* Either of the first two parameters may be null in which case the installed security providers will be searched for the highest priority implementation of the appropriate factory.
Likewise, the secure random parameter may be null in which case the default implementation will be used. */
context.init(null, null, null);
} catch (KeyManagementException e) {
// handle exception
}
}
答案 4 :(得分:0)