2016-03-31 38 views
3

SNSでプラットフォームアプリケーションを作成しようとしていますが、GCM/Googleプッシュサービスで簡単に実行できますが、Appleに問題があります。AWS SNS Apple APNSの.p12ファイルから証明書と秘密鍵を取得

CreatePlatformApplication()を呼び出してリクエストを渡すときに、証明書と秘密鍵であるPlatformCredentialとPlatformPrincipalが必要なようです。アプリケーションのためのAWSのドキュメントからのコードの

var snsClient = new AmazonSimpleNotificationServiceClient(); 

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

snsClient.CreatePlatformApplication(request); 

私はプッシュ通知を送信するために私たちのマニュアルシステムで使用されており、時間が取得することも試みているシステム上で現在.P12ファイルを持っています証明書と秘密鍵をp12ファイルから外していますが、PlatformPrincipalが無効であるという要求を送信するときにエラーを受信します。

正しいPlatformPrincipalとPlatformCredentialを.p12ファイルから取得する方法はありますか?

ドキュメント

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

答えて

0

あり、それはASN'1形式にエクスポートする必要がありますように、C#でこれを実行する簡単な方法はありませんが、あなたはOpenSSLを使用することができます。

秘密鍵

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

公開鍵

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

次にAWS SNSに

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); 
} 
を送信
関連する問題