我已启用推送通知服务的应用程序,直到现在都没有问题。但昨天我犯了一个错误,撤销了证书,通知也没有用。 然后我创建了一个新的apns推送生产证书(.p12文件),然后我将其放入我的服务器。但是现在我发现了以下错误:
System.IO.IOException:身份验证失败,因为远程端关闭了传输流。
在论坛中阅读我注意到不支持ssl3安全性,然后我尝试更改为tls。但是当我尝试这个时,我有这个错误:
远程端关闭传输流
我尝试使用带有2048位RSA的私钥生成.p12文件但没有结果。
这个mi服务器代码。我使用的是MoonApns。
certificate = If(String.IsNullOrEmpty(p12FilePassword), New X509Certificate2(File.ReadAllBytes(P12File)), New X509Certificate2(File.ReadAllBytes(P12File), p12FilePassword, X509KeyStorageFlags.MachineKeySet))
_certificates = New X509Certificate2Collection()
_certificates.Add(_certificate)
Dim _apnsClient As TcpClientapnsClient = New TcpClient()
_apnsClient.Connect(ProductionHost, NotificationPort)
Dim _apnsStream As SslStream = New SslStream(_apnsClient.GetStream(), False, AddressOf validateServerCertificate, AddressOf SelectLocalCertificate)
Try
_apnsStream.AuthenticateAsClient(ProductionHost, _certificates, System.Security.Authentication.SslProtocols.Tls, False)
Catch ex As System.Security.Authentication.AuthenticationException
Throw ex
End Try
谢谢你的帮助。
此致
答案 0 :(得分:1)
我找到了自己的解决方案!
如果您使用带有.p12证书的Moon APNS并且您需要使用tls安全性,则必须在apns服务器中安装apns_production.cer。如果你没有这个,你的系统可能会有套接字异常。
由于