ssl - 获取 APNS 套接字时遇到不匹配 key 文件错误

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

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

相关文章:

ssl - 通过 SSL 检索的数据是否由客户端浏览器缓存?

ssl - 只能使用一个文件中的中间证书和根证书来验证证书

Erlang的从模块: code and IO distribution

Erlang,将列表分配给记录时出现不匹配错误

ios - Apple Push Notifications - 应用商店提交

ios - 隐藏通过 NotificationService Extension 收到的通知

ios - 如何像 WhatsApp 一样实现 APNS?

Magento - 结帐页面未加载目录搜索的 https URL

amazon-web-services - AWS NLB 是否在终止 TLS 时传递 SNI 值? (通过 SNI 路由)

erlang - 记录网页访问的最佳方式