2017-04-19 8 views
0

저는 웹 개발에 익숙하지 않고 현재 IOS 앱에 의해 소비되는 Rest API를 개발 중입니다. 그래서 API를 개발하고 거기에 oauth2 보안을 가진 jwt 토큰을 구현했습니다. 이제 모바일 앱에서 사용할 API를 제공하고자합니다. 백엔드 서버에 SSL 인증서가 있습니다.클라이언트 측에서 SSL을 구현하는 방법은 무엇입니까?

https://server:port/dataapiurl 

같은 소비 나머지의 API가 될 것입니다 뭔가 지금까지 나는 SSL과 JWT에 대해 읽고 그리고 난 이미 그들은 SSL을 사용하는 클라이언트 서버 통신과 JWT 간의 암호화 된 채널에 사용되는 여러 가지 이유가 있습니다 권한 부여.

심지어 내가 JWT를 구현하고 통신이 SSL.So에 없다면 클라이언트와 서버간에 통신이 클라이언트 (모바일 앱) 측에서 수행되어야하는지 확인할 수 있습니다.

1. 모바일 앱이 새로운 인증서를 설치해야합니까 아니면 백엔드 서버의 SSL 인증서가 필요합니까?

2. Google의 백엔드 서버의 SSL 인증서 인 경우 모바일 앱에 설치하는 방법은 무엇입니까?

도움이 되셨습니까?

답변

0

클라이언트에서 SSL 인증서를 설정할 수는 있지만 설정할 수는 없습니다. 당신은 방금 NSURLSessionDelegate 프로토콜을 준수하고 구현할 수있는이 :

- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *))completionHandler{ 
if([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]){ 
    NSArray* netTrusts = @["your hostname here"]; 
    if(netTrusts != nil && [netTrusts containsObject:challenge.protectionSpace.host]){ 
     NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; 
     completionHandler(NSURLSessionAuthChallengeUseCredential,credential); 
    } 
} 

}

+0

당신이 further.Actually 내가 클라이언트 side.Since에서 SSL 인증서를 설정하는 방법을 요점을 파악하지 않았다 조금 설명해 주시겠습니까 나는 백엔드 개발자이고 나의 백엔드 서버는 SSL 키 인증서를 가지고있다. 모바일 애플리케이션에 인증서를 주어야 하는가? 더 많은 것을 조언 해 주실 수 있습니까? –

+0

NSURLSession을위한 델리게이트를 구현한다면, 또는로 서버를 요청할 수 있습니다. 장치에 인증서를 설정하지 않아도됩니다. 기기에 인증서를 설정하는 주된 문제는 서버에서 인증서가 해지되고 갱신 될 때마다 앱 인증서를 갱신해야한다는 것입니다. 여기에 쓴 코드를 사용하면 대리인이 ssl 챌린지를 수신하고 호스트가 신뢰할 수있는 경우 대리인이 요청을 장치의 인증서없이 완료하도록 허용합니다. –

+0

장치에 인증서를 설정하려면 OWASP 웹 사이트에서 찾을 수있는 인증서 피닝이라는 방법이 있습니다. https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning#iOS –