facebook webhook验证失败

时间:2016-06-14 23:02:14

标签: java facebook servlets ssl

尝试做一个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(".....");

}

谁能告诉我出了什么问题?我错过了什么? 感谢您的任何帮助! 最诚挚的问候

2 个答案:

答案 0 :(得分:1)

最后,经过一周的努力解决这个问题,找到解决这个问题的方法,即facebook message / webhook验证错误/抱怨:...... dh键太小.....

  1. 根本原因:我的Web应用程序服务器启用了sslv3,以及一些周密码套件。

  2. 解决方案:要解决此问题,需要禁用sslv3,启用TLSv1及更高版本,指定Web应用程序服务器使用的强密码套件。

  3. 我是怎么做到的: 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”

  4. 结果:facebook / message / webhook验证安全显示:“green-complete” - :) (代码是直的和正确的,没有任何错误。它是服务器ssl env。已经固定。)

答案 1 :(得分:0)

  

curl_error =错误:14082174:SSL   例程:ssl3_check_cert_and_algorithm: dh键太小;

您是否为SSL证书生成了2048位RSA密钥?

这看起来像是来自证书提供商的相关知识库文章:

https://support.comodo.com/index.php?/Default/Knowledgebase/Article/View/689/17/your-rsa-key-is-too-small-or-this-csr-uses-an-unsupported-key-size