TrustKit是一个开源框架,可以轻松地在任何iOS 12+、macOS 10.13+、tvOS 12+或watchOS 4+应用中部署SSL公钥固定和报告功能;它支持Swift和Objective-C应用。
如果你需要在Android应用中使用SSL固定/报告功能,我们还发布了TrustKit for Android,地址为https://github.com/datatheorem/TrustKit-Android。
TrustKit提供以下功能:
在应用中部署SSL固定需要使用固定策略(域名、主体公钥信息哈希和其他设置)初始化TrustKit。
策略可以在应用的Info.plist
中配置:
另外,也可以通过编程方式设置固定策略:
NSDictionary *trustKitConfig = @{ kTSKSwizzleNetworkDelegates: @NO, kTSKPinnedDomains : @{ @"www.datatheorem.com" : @{ kTSKExpirationDate: @"2017-12-01", kTSKPublicKeyHashes : @[ @"HXXQgxueCIU5TTLHob/bPbwcKOKw6DkfsTWYHbxbqTY=", @"0SDf3cRToyZJaMsoS17oF72VMavLxj/N7WBNasNuiR8=" ], kTSKEnforcePinning : @NO, }, @"yahoo.com" : @{ kTSKPublicKeyHashes : @[ @"TQEtdMbmwFgYUifM4LDF+xgEtd0z69mPGmkp014d6ZY=", @"rFjc3wG7lTZe43zeYTvPq8k4xdDEutCmIhI5dn4oCeE=", ], kTSKIncludeSubdomains : @YES } }}; [TrustKit initSharedInstanceWithConfiguration:trustKitConfig];
在Swift应用中也可以通过编程方式设置策略:
let trustKitConfig = [ kTSKSwizzleNetworkDelegates: false, kTSKPinnedDomains: [ "yahoo.com": [ kTSKExpirationDate: "2017-12-01", kTSKPublicKeyHashes: [ "JbQbUG5JMJUoI6brnx0x3vZF6jilxsapbXGVfjhN8Fg=", "WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18=" ],]]] as [String : Any] TrustKit.initSharedInstance(withConfiguration:trustKitConfig)
初始化TrustKit后,可以从TrustKit单例中获取一个TSKPinningValidator
实例,并在应用的网络代理中使用它来执行SSL固定验证。例如在NSURLSessionDelegate中:
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler { { TSKPinningValidator *pinningValidator = [[TrustKit sharedInstance] pinningValidator]; // 将认证挑战传递给验证器;如果验证失败,连接将被阻止 if (![pinningValidator handleChallenge:challenge completionHandler:completionHandler]) { // TrustKit没有处理这个挑战:可能不是服务器信任 // 或者域名没有被固定。回退到默认行为 completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, nil); } }
更多信息,请参阅[入门指南][getting-started]。
TrustKit是Data Theorem和Yahoo移动团队的联合努力成果。详情请参阅AUTHORS
文件。
TrustKit基于MIT许可证发布。详情请参阅LICENSE
文件。
[入门指南]: https://github.com/datatheorem/TrustKit/blob/master/docs/getting-started.md
[BH2015-PDF]: https://github.com/datatheorem/TrustKit/blob/master/docs/TrustKit-BH2015.pdf
[BH2015会议]: https://www.blackhat.com/us-15/briefings.html#trustkit-code-injection-on-ios-8-for-the-greater-good
[API文档]: https://datatheorem.github.io/TrustKit/documentation
[iOS9文章]: https://datatheorem.github.io/ios/2015/10/17/trustkit-ios-9-shared-cache/
[PayPal文章]: https://www.paypal-engineering.com/2015/10/14/key-pinning-in-mobile-applications/
AI小说写作助手,一站式润色、改写、扩写
蛙蛙写作—国内 先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。