2016-03-31 4 views
3

Ich versuche, eine Plattform-Anwendung auf SNS zu erstellen und kann es leicht für GCM/Google Push-Dienst tun, aber ich habe Probleme mit Apple.AWS SNS Zertifikat und privaten Schlüssel aus .p12 Datei für Apple APNS

Es scheint, wenn ich, wenn ich CreatePlatformApplication() aufrufen und die Anfrage übergeben muss ich PlatformCredential und PlatformPrincipal haben, die das Zertifikat und der private Schlüssel ist.

Beispiel-Code von AWS-Dokumentation für eine Anwendung

var snsClient = new AmazonSimpleNotificationServiceClient(); 

var request = new CreatePlatformApplicationRequest 
{ 
    Attributes = new Dictionary<string, string>() { { "PlatformCredential", "AIzaSyDM1GHqKEdVg1pVFTXPReFT7UdGEXAMPLE" } }, 
    Name = "TimeCardProcessingApplication", 
    Platform = "GCM" 
}; 

snsClient.CreatePlatformApplication(request); 

Ich habe eine P12-Datei aktuell System, das mit unserem manuellen System verwendet wird, Push-Benachrichtigungen zu senden und haben versucht, kann mal das bekommen Zertifikat und privater Schlüssel aus der p12-Datei, aber ich erhalte immer noch einen Fehler beim Senden der Anfrage, dass PlatformPrincipal ungültig ist.

Haben Sie Ideen, wie Sie das richtige PlatformPrincipal und PlatformCredential aus den .p12-Dateien erhalten?

Dokumentation

http://aws-net-resources-preview-docs.s3-website-us-east-1.amazonaws.com/Index.html?page=NSNS_Resources_NET4_5.html&tocid=Amazon_SimpleNotificationService_Resources

Antwort

0

Es gibt keine einfache Möglichkeit, dies in C# zu tun, wie es zu ASN'1-Format exportiert werden muss, aber man kann OpenSSL verwenden:

Privater Schlüssel

openssl pkcs12 -in key.p12 -nodes -nocerts -passin pass: > private.txt 

öffentlichen Schlüssel

openssl pkcs12 -in key.p12" -nodes -nokeys -passin pass: > public.txt 

Dann

string publicKey = File.ReadAllText("public.txt"); 
string privateKey = File.ReadAllText("private.txt"); 

using (var client = new AmazonSimpleNotificationServiceClient()) 
{ 
    var request = new CreatePlatformApplicationRequest() 
    { 
     Name = Client, 
     Platform = TargetPlatform, 
     Attributes = 
       new Dictionary<string, string>() 
       { 
       {"PlatformCredential", privateKey }, 
       {"PlatformPrincipal", publicKey } 
       } 
    }; 
    var response = client.CreatePlatformApplication(request); 
} 
AWS SNS senden
Verwandte Themen