[swift] Swift로 HTTP 요청에 TLS 인증서 설정하기

이번 글에서는 Swift로 HTTP 요청을 보낼 때 TLS 인증서를 설정하는 방법에 대해 알아보겠습니다.

TLS (Transport Layer Security)는 데이터 통신 과정에서 인증과 암호화를 제공하여 안전한 통신을 보장하는 프로토콜입니다. HTTPS 프로토콜을 사용하는 경우 서버로의 요청을 보낼 때 TLS 인증서를 검증하여 안전한 연결을 확립할 수 있습니다.

간단한 예제를 통해 Swift로 TLS 인증서를 설정하는 방법을 살펴보겠습니다.

Alamofire 라이브러리 사용하기

Swift에서 HTTP 요청을 보내는 데 가장 일반적으로 사용되는 라이브러리는 Alamofire입니다. Alamofire는 간편하고 직관적인 API를 제공하여 HTTP 요청을 보내는 것을 쉽게 처리할 수 있습니다.

먼저, Alamofire를 프로젝트에 추가해야 합니다. CocoaPods를 사용한다면 Podfile에 다음과 같이 추가해주세요:

pod 'Alamofire'

그리고 pod install 명령을 실행하여 라이브러리를 설치합니다.

TLS 인증서 추가하기

TLS 인증서를 사용하려면 PEM 형식의 인증서 파일이 필요합니다. 인증서 파일을 프로젝트에 추가한 후, 해당 파일을 사용하여 TLS 인증서를 설정할 수 있습니다.

import Alamofire

func sendRequest() {
    let certificatePath = Bundle.main.path(forResource: "cert", ofType: "pem")
    let certificateData = NSData(contentsOfFile: certificatePath!)

    let serverTrustPolicies: [String: ServerTrustPolicy] = [
        "api.example.com": .pinCertificates(
            certificates: [SecCertificateCreateWithData(nil, certificateData!)!],
            validateCertificateChain: true,
            validateHost: true
        )
    ]

    let sessionManager = SessionManager(delegate: SessionDelegate(), serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies))

    sessionManager.request("https://api.example.com").responseJSON { response in
        // 처리할 로직 작성
    }
}

위의 예제에서는 cert.pem이라는 인증서 파일을 사용하여 https://api.example.com에 HTTP 요청을 보내고 있습니다. 인증서 파일의 경로를 제대로 설정하고, 적절한 도메인과 포트를 입력해야 합니다.

알라모파이어의 SessionManager를 생성할 때 serverTrustPolicyManager를 설정하여 TLS 인증서 검증을 활성화하고 있습니다. serverTrustPolicies를 통해 도메인과 인증서 검증 방식을 지정할 수 있습니다.

결론

Swift로 HTTP 요청에 TLS 인증서를 설정하는 방법을 알아보았습니다. Alamofire 라이브러리를 통해 간편하게 TLS 인증서를 추가하고, 안전한 HTTP 요청을 보낼 수 있습니다.

더 자세한 내용은 Alamofire GitHub 저장소를 참고하시기 바랍니다.