在获取APNS套接字时遇到badmatch密钥文件错误

时间:2015-06-09 14:17:24

标签: ssl erlang apple-push-notifications ssl-certificate ejabberd

由于我面临无法识别的算法崩溃,我按照此处的说法进行了修补: http://erlang.org/pipermail/erlang-questions/2015-June/084870.html

CRASH不再出现,但即使在此之后我也没有获得任何APNS推送通知。我最后有沙盒环境

当我在ejabberd shell上运行时:

    mod_mymodule:get_socket().

我明白了:

{error,{keyfile,{badmatch,{error,{asn1,{invalid_length,6}}}}}}

我的证书和私人RSA密钥文件在几个月内正常运行,直到弹出。

get_socket()方法定义是:

get_socket()->
 %%Options
  Options = [{certfile, ?Cert}, {keyfile, ?Key}, {mode, binary}],
  %%ssl connection
   ssl:connect(?Address, ?Port, Options, infinity) .

仅供参考,我的宏声明如下:

-define(Cert,"/opt/ejabberd-14.07/bin/MantuPush/cert.pem").
-define(Key,"/opt/ejabberd-14.07/bin/MantuPush/finalkey.pem").

注意:我在这里没有使用过CSR,因为示例没有说明它是强制性的(猜猜!)。

可能有什么不对? APNS使用的正确证书和私钥内容是什么?

请帮助。 感谢

1 个答案:

答案 0 :(得分:1)

这是一个Erlang错误。查看我们关于快速入侵的Erlang pull请求和关于Github的讨论:https://github.com/erlang/otp/pull/767

以下是解释此问题的博文:https://blog.process-one.net/apple-increasing-security-of-push-service-ahead-of-wwdc/