2016-04-07 7 views
0

Hallo ich arbeite mit dem XMPP Framework alles funktioniert gut. Jetzt aus Sicherheitsgründen muss ich mit ssl-Zertifikat arbeiten.Aber ich weiß nicht, wie in meiner Anwendung zu implementieren, auch ich weiß nicht, grundlegende Sache für SSL-Zertifikat so kann jeder Körper bitte helfen Sie mir, wie Sie SSL erstellen. und wie man in xmpp in ios implementiert und ich arbeite mit openfire server.Wie SSL-Zertifikat in Xmpp IOS verwenden?

+0

beziehen sich auf diesen Link https://developers.google.com/cloud-messaging/ios/certs#generate_a_certificate_signing_request_file – iOS

+0

@darjiJigar Danke für die Replay Aber das ist für Push-Benachrichtigungen oder? Dass man auch für xmpp Framework arbeiten leid wenn meine Frage falsch ist – Bittoo

Antwort

0

Hey, ich erfolgreich umgesetzt SSL in XMPP, Führen Sie die folgenden Schritte aus:

Schritt- 1:

-(BOOL) connect { 

    [self setupStream]; 

    [xmppStream setHostName:xxx]; 
    [xmppStream setHostPort:zzz]; 
    [xmppStream setMyJID:yyy]; 

    NSError *error = nil; 

    if (![xmppStream oldSchoolSecureConnectWithTimeout:XMPPStreamTimeoutNone error:&error]) { 

    nslog(@"Error %@",error) 

     return NO; 
    } 

    return YES; 

} 

Schritt- 2:

- (void)setupStream { 

    customCertEvaluation = NO; 
    allowSelfSignedCertificates = NO; 
    allowSSLHostNameMismatch = NO; 


    xmppStream = [[XMPPStream alloc] init]; 
    [xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()]; 

    xmppStream.startTLSPolicy = XMPPStreamStartTLSPolicyPreferred; 
    // or 
    // xmppStream.startTLSPolicy = XMPPStreamStartTLSPolicyRequired; 

} 

Schritt- 3: Setzen Sie Flags gemäß Ihren Serveranforderungen

- (void)xmppStream:(XMPPStream *)sender willSecureWithSettings:(NSMutableDictionary *)settings 
    { 
     NSString *expectedCertName = [xmppStream.myJID domain]; 

     if (customCertEvaluation){ 
      [settings setObject:@(YES) forKey:GCDAsyncSocketManuallyEvaluateTrust]; 
     } 
     // if (allowSelfSignedCertificates){ 
     //  [settings setObject:[NSNumber numberWithBool:YES] forKey:(NSString *)kCFStreamSSLAllowsAnyRoot]; 
     // } 
     if (allowSSLHostNameMismatch){ 
      [settings setObject:[NSNull null] forKey:(NSString *)kCFStreamSSLPeerName]; 
     } 
     else{ 
      if (expectedCertName) 
       [settings setObject:expectedCertName forKey:(NSString *)kCFStreamSSLPeerName]; 
     } 
    }