[swift] Swift Moya에서 SSL 인증 사용하기

Moya는 Swift로 작성된 네트워킹 라이브러리로서 SSL 인증을 사용하여 안전한 통신을 가능하게 합니다. 이 글에서는 Swift Moya를 사용하여 SSL 인증을 설정하는 방법에 대해 알아보겠습니다.

1. 인증서 추가

먼저, 사용할 SSL 인증서를 프로젝트에 추가해야 합니다. 인증서를 .cer 또는 .p12 형식으로 준비하고 Xcode 프로젝트에 추가합니다. 추가한 인증서를 확인하기 위해 ‘Build Phases’ 탭에서 ‘Copy Bundle Resources’ 섹션을 확인하십시오.

2. Moya Provider 생성

다음으로, Moya Provider를 생성하고 SSL 인증서를 사용할 준비를 해야 합니다. Moya Provider를 생성할 때 manager 매개변수를 전달하여 SSL 설정을 추가할 수 있습니다. 다음은 SSL 설정을 추가하는 예시입니다.

import Moya

...

let provider = MoyaProvider<MyAPI>(manager: CustomSessionManager.sharedManager)

위의 예시에서 CustomSessionManager는 SSL 설정을 포함하는 사용자 정의 세션 매니저입니다.

3. SSL 설정

SSL 설정을 포함하는 사용자 정의 세션 매니저를 구현해야 합니다. 다음은 CustomSessionManager의 예시입니다.

import Alamofire

...

class CustomSessionManager {
    static let sharedManager: SessionManager = {
        let serverTrustPolicies: [String: ServerTrustPolicy] = [
            "your.api.url.com": .pinCertificates(
                certificates: ServerTrustPolicy.certificates(),
                validateCertificateChain: true,
                validateHost: true
            )
        ]
        
        let configuration = URLSessionConfiguration.default
        configuration.httpAdditionalHeaders = Alamofire.SessionManager.defaultHTTPHeaders
        
        return SessionManager(
            configuration: configuration,
            serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
        )
    }()
}

위의 예시에서 "your.api.url.com"을 사용하는 API URL에 대해 SSL 인증을 설정합니다. ServerTrustPolicy.pinCertificates를 사용하여 인증서를 고정하고 인증서 체인을 검증하고 호스트를 확인합니다.

위의 코드를 사용하여 Moya Provider를 설정하고 SSL 인증을 사용하여 요청을 보낼 수 있습니다.

참고 자료