使用 iOS 推送证书,为什么拥有 SSL 证书可以让 Apple 知道他们正在连接的服务器?



我正在阅读这篇关于iOS推送证书的文章,我对以下段落感到困惑:

Your backend sends notifications through Apple's servers to your application. To ensure that unwanted parties are not sending notifications to your application, Apple needs to know that only your servers can connect with theirs. Apple therefore requires you to create an SSL certificate to be able to send push notifications.

我对SSL证书的理解是,如果服务器有SSL证书,那么该服务器就能够加密发送到设备的数据。但这里写着Apple needs to know that only your servers can connect with theirs。我不明白SSL证书是如何确保这一点的。有人有什么见解吗?

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

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

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

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

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

对于推送通知,开发人员生成一个证书请求,并将其提交给Apple,Apple使用其私钥对其进行签名。在这种情况下,苹果是值得信赖的一方。

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

你已经用他们的私钥加密了消息(苹果可以用证书中的公钥解密(。

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

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

最新更新