Разрешить самозаверяющие сертификаты с помощью WKWebView - PullRequest
0 голосов
/ 23 мая 2018

У меня есть следующий код, но я не знаю, почему мой веб-просмотр не загружается.

override func viewDidLoad() {
    super.viewDidLoad()
    loadWebview(env_url:"https://myurl.com")
}

func loadWebview(env_url : String){

    let config = WKWebViewConfiguration()
    let controller = WKUserContentController()
    config.userContentController = controller
    //only https is allowed
    let url = URL(string: env_url)
    if let optional_url = url {
        let url_request = URLRequest(url: optional_url)
        webview = WKWebView(frame: self.view.frame, configuration: config)
        webview?.load(url_request)
        webview?.allowsBackForwardNavigationGestures = true
        webview?.navigationDelegate = self
        webview?.uiDelegate = self
        view.addSubview(webview!)

    }
    else{
        showAlertDebug(message: "Invalid URL")
    }
}

extension WebViewController : WKNavigationDelegate {
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping ((WKNavigationActionPolicy) -> Void)) {

    decisionHandler(.allow)
}

func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
    let cred = URLCredential(trust: challenge.protectionSpace.serverTrust!)
    completionHandler(.useCredential, cred)
}
}

extension WebViewController : WKUIDelegate {

}

1 Ответ

0 голосов
/ 23 мая 2018

Вы должны предоставить исключения ATS (App Transport Security) в Info.plist, чтобы переопределить логику проверки сертификата.Пока вы принимаете сертификат, система ATS по-прежнему отклоняет его.Подробнее см. NSAppTransportSecurity в справочнике ключей списка свойств информации .Как правило, вы хотите NSAllowsArbitraryLoadsInWebContent для вашего конкретного домена для этого использования.

Имейте в виду:

Обзор App Store для ATS

Ваше использование определенныхКлючи App Transport Security (ATS) запускают дополнительную проверку App Store для вашего приложения и требуют от вас обоснования.Эти ключи:

  • NSAllowsArbitraryLoads
  • NSAllowsArbitraryLoadsForMedia
  • NSAllowsArbitraryLoadsInWebContent
  • NSExceptionAllowsInsecureHTTP23* Некоторые примеры обоснований, которые могут быть рассмотрены:
    • Необходимо подключиться к серверу, управляемому другим объектом, который не поддерживает безопасные подключения
    • Необходимо поддерживать подключение к устройствам, которые не могут быть обновлены доиспользовать защищенные соединения, к которым необходимо обращаться через общедоступные имена хостов
    • Должен предоставлять встроенный веб-контент из различных источников, но не может использовать класс, поддерживаемый ключом NSAllowsArbitraryLoadsInWebContent
    • Приложение загружает медиа-контентзашифрованный и не содержащий персонализированной информации

    При отправке приложения в App Store укажите в App Store достаточную информацию, чтобы определить, почему ваше приложение не может устанавливать безопасные соединения с помощьюefault.

Как правило, получить коммерческий сертификат проще, чем управлять исключениями для управления собственным корневым сертификатом (что на самом деле представляют собой "самозаверяющие" сертификаты).

...