Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有了iOS推送证书,为什么拥有SSL证书可以让苹果知道他们是你的服务器';你在和谁联系?_Ios_Ssl_Push Notification_Ssl Certificate - Fatal编程技术网

有了iOS推送证书,为什么拥有SSL证书可以让苹果知道他们是你的服务器';你在和谁联系?

有了iOS推送证书,为什么拥有SSL证书可以让苹果知道他们是你的服务器';你在和谁联系?,ios,ssl,push-notification,ssl-certificate,Ios,Ssl,Push Notification,Ssl Certificate,我正在阅读iOS推送证书,我对这一段感到困惑: 您的后端通过苹果服务器向您的应用程序发送通知。为了确保不受欢迎的用户不会向您的应用程序发送通知,苹果需要知道只有您的服务器才能连接到他们的应用程序。因此,Apple要求您创建SSL证书,以便能够发送推送通知。 我对SSL证书的理解是,如果服务器具有SSL证书,则该服务器能够加密发送到设备的数据。但是这里说苹果需要知道只有你的服务器才能连接到他们的服务器。我不明白SSL证书是如何确保这一点的。有人有什么见解吗?这篇文章不应该使用SSL证书这个术语。S

我正在阅读iOS推送证书,我对这一段感到困惑:

您的后端通过苹果服务器向您的应用程序发送通知。为了确保不受欢迎的用户不会向您的应用程序发送通知,苹果需要知道只有您的服务器才能连接到他们的应用程序。因此,Apple要求您创建SSL证书,以便能够发送推送通知。


我对SSL证书的理解是,如果服务器具有SSL证书,则该服务器能够加密发送到设备的数据。但是这里说苹果需要知道只有你的服务器才能连接到他们的服务器。我不明白SSL证书是如何确保这一点的。有人有什么见解吗?

这篇文章不应该使用SSL证书这个术语。SSL是安全套接字层(多年前被TLS取代)。SSL和TLS定义用于协商连接加密的握手

在web服务器上启用SSL需要有一个证书来验证服务器的身份,因此这被通俗地称为“SSL证书”

虽然它在web上不常用,但在SSL/TLS中,双方都可以提供证书,以便进行相互身份验证

您通常拥有的实际上是一个。推送通知服务就是这样

x.509证书包含一些信息,包括证书持有人的身份、他们的私钥以及来自可用于验证信息的受信任方的签名

对于推送通知,开发人员生成一个证书请求,并将其提交给苹果公司,苹果公司使用其私钥对其进行签名。苹果是本案中值得信赖的一方

当该证书随后提交给苹果的服务器时,他们可以使用公钥验证该签名,以确认连接方的身份

您已经使用他们的私钥对消息进行了加密(苹果可以使用证书中包含的公钥对其进行解密)

这意味着,只要开发者的私钥保持安全(例如,这就是为什么你不会直接从你的应用程序连接到推送服务),苹果就可以确保连接服务器的身份


如果有人试图模拟您的服务器,那么,只要您保持私钥安全,他们就无法正确加密数据。如果他们使用的伪造证书使用的是他们已知的公钥/私钥对,那么证书上的签名将无效,苹果将拒绝该签名

谢谢你的详细解释。我有几个澄清问题。首先,你说“他们的私钥和签名”。使用公钥加密,他们与苹果共享的不是服务器的公钥,而是私钥吗?有一个输入错误(可以而不是不能)。是的,您的公钥是Apple在颁发您的证书时使用其私钥签名的内容之一。当您想要通过身份验证发送推送时,您需要使用私钥对发送到苹果服务器的信息进行签名。苹果使用您的公钥来确认已签名的信息是正确的(并且只能由您签名,因为只有您拥有私钥)。他们从您提供的x.509证书中获得的公钥,他们使用私钥签名,因此他们知道可以信任该证书和其中的公钥。好的,谢谢。因此,在整个交易中,什么是与苹果通信的服务器,OneSignal在哪里?服务器是否只是与向其他应用发送推送通知的任何第三方应用关联的服务器?如果是这样的话,那么我知道这个第三方应用服务器通过苹果服务器向另一个应用发送推送通知,但是OneSignal在这一系列事件中处于什么位置?顺便说一句,我已经批准了你的答案。如果你有任何见解,我还问了另一个问题: