그래오늘은이거야

swift alamofire 서버에 대한 SSL 인증서가 유효하지 않습니다. 신뢰 인증서로 강제 변경 인증서 신뢰로 바꿔놓기 본문

세상 개발/IOS(Swift)

swift alamofire 서버에 대한 SSL 인증서가 유효하지 않습니다. 신뢰 인증서로 강제 변경 인증서 신뢰로 바꿔놓기

jinhongstar 2023. 9. 14. 14:44
728x90
반응형

 

 

- swift alamofire 서버에 대한 인증서가 유효하지 않습니다. 사용자의 비밀 정보를 위험에 노출시킬 수 있는

- swift alamofire "xxxxxx.xxxx.co.kr" 주소 url을 SSL TRUST 인증서 허용해주기

- swift alamofire 이 서버에 대한 인증서가 유효하지 않습니다. 사용자의 비밀 정보를 위험에 노출시킬 수 있는 ‘sm.jbbank.co.kr’인 것처럼 보이는 서버에 연결될 수 있습니다." UserInfo={NSLocalizedRecoverySuggestion=서버에 연결하겠습니까? 오류 해결

 

AF.request

 

 

보안에 취약하고 위험할 수 있습니다. 저는 인증서를 강제로 스킵 요청을 받고

모의 해킹을 하기위해 강제로 모든 사이트를 SSL인증서를 안전한 TRUST 모드로 변경하였습니다.

Proxy Trust Certification

모든 사이트에서 들어오는 SSL 인증서를 강제로 반드시 신뢰 시키는 방법.


//trust 인증서 SKIP 모의해킹 관련 인증서를 스킵한다.
//========================================================================================================
guard let evaluator = try stateProvider?.serverTrustManager?.serverTrustEvaluator(forHost: host) else {
return (.performDefaultHandling, nil, nil)
}
try evaluator.evaluate(trust, forHost: host)
//========================================================================================================

 

Alamofire 5 xx 버전은 아래와 같이 작업을 하면됩니다.

 

func attemptServerTrustAuthentication(with challenge: URLAuthenticationChallenge) -> ChallengeEvaluation {


#if !(os(Linux) || os(Windows))
/// Evaluates the server trust `URLAuthenticationChallenge` received.
///
/// - Parameter challenge: The `URLAuthenticationChallenge`.
///
/// - Returns:             The `ChallengeEvaluation`.
func attemptServerTrustAuthentication(with challenge: URLAuthenticationChallenge) -> ChallengeEvaluation {
    let host = challenge.protectionSpace.host

    guard challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust,
          let trust = challenge.protectionSpace.serverTrust
    else {
        return (.performDefaultHandling, nil, nil)
    }

    do {


//            guard let evaluator = try stateProvider?.serverTrustManager?.serverTrustEvaluator(forHost: host) else {
//                return (.performDefaultHandling, nil, nil)
//            }

//            try evaluator.evaluate(trust, forHost: host)

        return (.useCredential, URLCredential(trust: trust), nil)
    } catch {
        return (.cancelAuthenticationChallenge, nil, error.asAFError(or: .serverTrustEvaluationFailed(reason: .customEvaluationFailed(error: error))))
    }
}
#endif

반응형
Comments