[英]Adding trust for a X509 CA certificate imported into keychain on OS X
最近,我編寫了一小段代碼,從 SCEP 服務器獲取 CA 證書,將其轉換為 SecCertificateRef 並將其添加到鑰匙串(系統或登錄)。 現在我想知道如何讓系統信任該證書。 我一直在玩Trust Policies,但還沒有運氣。
最重要的是,我了解系統可能不允許您在沒有用戶交互的情況下自動信任證書。 如果是這樣,你如何開始互動? 使用“SecCertificateAddToKeychain”將證書靜默放入鑰匙串中。
旁注:我也在嘗試使用此代碼支持 10.5。
謝謝你的幫助!
編輯:在玩過 Citrix 頁面上的代碼后,我想出了自己的 function。 根據我從花旗頁面收集的信息,這種方法具有破壞性。 因此,如果證書已經在鑰匙串中並且已經有策略(iChat 等),這將覆蓋那些。 因為我在我的項目中不關心這個,所以這是我想出的一個更簡單的版本。
-(OSStatus) addCertificate: (CertificateWrapper *) cert trust:(BOOL) shouldTrust {
//keychain is a SecKeychainRef created with SecKeychainOpen
OSStatus result = SecCertificateAddToKeychain([cert certificate], keychain);
if((result == noErr || result == errKCDuplicateItem) && shouldTrust){
SecTrustSettingsDomain domains[3] = { kSecTrustSettingsDomainSystem, kSecTrustSettingsDomainAdmin, kSecTrustSettingsDomainUser};
for(int i = 0; i < 3; i++){
CFMutableArrayRef trustSettingMutArray = NULL;
trustSettingMutArray = CFArrayCreateMutable (NULL, 0, &kCFTypeArrayCallBacks);
result = SecTrustSettingsSetTrustSettings([cert certificate], domains[i], trustSettingMutArray );
if(result == noErr){
break;
}
}
}
return result;
}
Citrix web 站點上有一個很好的示例,其中包含大量示例代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.