2017-07-25 10 views
0

私はMacOSアプリケーションを構築して、ココアプロジェクトを持っています。 Apple Storeには配布しません。MacOSでswift 3でログインキーチェーンに証明書をインストール

このコマンドのように、信頼できるようにログインキーチェーンに証明書をインストールするには、Swift 3で何を使用しますか?

security add-trusted-cert -k ~/Library/Keychains/login.keychain-db ca-cert.cer 

すでに私のca-cert.cerとca-cert.pemが作成されています。

次のコードその後、私は

openssl x509 -outform der -in ~/ca-cert.pem -out ~/ca-cert.der 

と私のPEMのDERバージョンを作成します、私は認証APIについて知っていると私はアップルのドキュメントで、この方法https://developer.apple.com/documentation/security/1401659-secitemadd とこのdoc https://developer.apple.com/documentation/security/certificate_key_and_trust_services/certificates/storing_a_certificate_in_the_keychain

最初に見ましたログインキーチェーンに証明書を正常にインストールできますが、信頼されません。

do { 
     let cerData = NSData(contentsOfFile: homeDirURL.path + "/ca-cert.der") 
     let certificate: SecCertificate? = SecCertificateCreateWithData(nil, cerData as! CFData) 
     let addquery: [String: Any] = [kSecClass as String: kSecClassCertificate, 
             kSecValueRef as String: certificate, 
             kSecAttrLabel as String: "My Certificate"] 
     let status = SecItemAdd(addquery as CFDictionary, nil) 
     guard status == errSecSuccess else { 
      print("error \(status) : " + (SecCopyErrorMessageString(status, nil) as! String)) 
      return 
     } 

    } 
    catch let error as NSError { 
     print("Ooops! Something went wrong: \(error)") 
    } 

常に信頼できるように変更する必要はありますか?

答えて

1

目的では、次の手順を実行する必要があります。あなたの証明書はすでにSecItemAdd

私は手でこれを入力するので、自分で型エラーをチェック
SecCertificateRef certificate; //use SecCertificateCreateWithData to get it. 

NSDictionary *newTrustSettings = @{(id)kSecTrustSettingResult:[NSNumber numberWithInt:kSecTrustSettingsResultTrustRoot]}; 

SecTrustSettingsSetTrustSettings(certificate, kSecTrustSettingDomainUser, (__bridget CFTypeRef)newTrustSettings)); 

注意を使用してlogin.keychainにインストールされている//

私は自分でテストしましたので、すばやくコードに変更する必要があります。

関連する問題