由于我面临无法识别的算法崩溃,我按照此处所述进行了修补: http://erlang.org/pipermail/erlang-questions/2015-June/084870.html
崩溃不再出现,但即使在那之后我也没有收到任何 APNS 推送通知。我这边有沙盒环境。
当我在 ejabberd shell 上运行时:
mod_mymodule:get_socket().
我得到:
{error,{keyfile,{badmatch,{error,{asn1,{invalid_length,6}}}}}}
我的证书和私有(private) RSA key 文件在弹出之前几个月都运行良好。
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 使用的正确证书和私钥内容是什么?
请帮忙。 谢谢
最佳答案
这是一个 Erlang 错误。查看我们的 Erlang pull request for quick hack 和 Github 上的讨论:https://github.com/erlang/otp/pull/767
这是解释该问题的博文:https://blog.process-one.net/apple-increasing-security-of-push-service-ahead-of-wwdc/
关于ssl - 获取 APNS 套接字时遇到不匹配 key 文件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30734707/