尝试做一个facebook消息机器人测试。 成功设置工作https://www.mydoamin.com。 (从namecheap的comodo,DV(域验证)购买SSL,这是最基本的SSL产品。据说DV / SSL足以用于facebook app。)。这是一个真正的公共网站,并通过https正常工作。测试
点击webhook设置页面上的“验证并保存”按钮后,从Facebook Webhook验证中获取错误信息: “无法验证URL。回调验证失败,出现以下错误:curl_errno = 35; curl_error =错误:14082174:SSL例程:ssl3_check_cert_and_algorithm:dh键太小; HTTP状态代码= 200; HTTP消息=已建立连接。” (但在我的服务器端,我没有看到任何日志信息,即看来facebook平台在结束验证失败之前没有真正与我的应用服务器进行交互.... ???)
我处理webhook回调测试的java服务器代码如下:
public void doGet(HttpServletRequest request,HttpServletResponse response){
log.info("MyIS FB Webhook callback starts...");
HttpSession session = request.getSession();
String selectedScreen = request.getServletPath();
String VALIDATION_TOKEN = "WebhookToken";
try {
if(selectedScreen.equals("/webhook")){
log.info("/webhook starts....");
if (request.getParameter("hub.mode").equals("subscribe") &&
request.getParameter("hub.verify_token").equals(VALIDATION_TOKEN) {
response.setStatus(HttpServletResponse.SC_OK);
PrintWriter out = response.getWriter();
out.write(request.getParameter("hub.challenge"));
out.flush();
out.close();
} else {
log.info("/webhook failed....");
response.setStatus(403);
}
}
} catch(Exception e){
log.info(".....");
}
log.info(".....");
}
谁能告诉我出了什么问题?我错过了什么? 感谢您的任何帮助! 最诚挚的问候
答案 0 :(得分:1)
最后,经过一周的努力解决这个问题,找到解决这个问题的方法,即facebook message / webhook验证错误/抱怨:...... dh键太小.....
根本原因:我的Web应用程序服务器启用了sslv3,以及一些周密码套件。
解决方案:要解决此问题,需要禁用sslv3,启用TLSv1及更高版本,指定Web应用程序服务器使用的强密码套件。
我是怎么做到的: a)将我的linux服务器从centOS5.6升级到centOS6.8 b)将jdk从1.6升级到1.7 c)在我的Web应用程序服务器的配置文件server.xml上,指定要使用的强密码套件,如: sslProtocol = “使用TLSv1” SSLHonorCipherOrder =“On”ciphers =“TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256”
结果:facebook / message / webhook验证安全显示:“green-complete” - :) (代码是直的和正确的,没有任何错误。它是服务器ssl env。已经固定。)
答案 1 :(得分:0)
curl_error =错误:14082174:SSL 例程:ssl3_check_cert_and_algorithm: dh键太小;
您是否为SSL证书生成了2048位RSA密钥?
这看起来像是来自证书提供商的相关知识库文章: