【问题标题】:Facing badmatch keyfile error while fetching APNS Socket获取 APNS 套接字时遇到错误匹配密钥文件错误
【发布时间】:2023-03-11 01:20:02
【问题描述】:

由于我面临无法识别的算法崩溃,因此我按照此处所述进行了修补: 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}}}}}}

我的证书和私有 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 使用的正确证书和私钥内容是什么?

请帮助。 谢谢

【问题讨论】:

  • 密钥文件有密码保护吗?如果是这样,您需要提供{password, "foo"} 选项。您可以通过openssl rsa -in finalkey.pem -check查看。
  • @legoscia 否,该文件不受保护。在创建证书和密钥时,系统提示我输入密码,我只需点击返回并继续。
  • 你能解决这个问题吗?

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


【解决方案1】:

这是一个 Erlang 错误。查看我们的 Erlang 拉取请求以进行快速破解和 Github 上的讨论:https://github.com/erlang/otp/pull/767

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

【讨论】:

  • 他应用了补丁,正如他所提到的。那怎么可能仍然是您的答案中描述的erlang-bug?更新到最新的 OTP 17 版本后,我也收到此错误消息。任何线索可能是什么原因?
猜你喜欢
  • 2017-10-01
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 2021-10-06
  • 2020-06-04
  • 1970-01-01
  • 2019-07-19
  • 2011-09-19
相关资源
最近更新 更多