TrustKit เป็นเฟรมเวิร์กโอเพ่นซอร์สที่ทำให้ง่ายต่อการปรับใช้การตรึงคีย์สาธารณะ SSL และการรายงานในแอพ iOS 12+, MacOS 10.13+, TVOS 12+ หรือแอป WatchOS 4+; รองรับทั้งแอพ Swift และ Objective-C
หากคุณต้องการ SSL Pinning/การรายงานในแอพ Android ของคุณ นอกจากนี้เรายังได้เปิด ตัว TrustKit สำหรับ 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 ได้รับการเริ่มต้นแล้วอินสแตนซ์ TSKPinningValidator สามารถเรียกคืนได้จาก TrustKit Singleton และสามารถใช้ในการตรวจสอบความถูกต้องของ SSL Pinning ในผู้แทนเครือข่ายของแอป ตัวอย่างเช่นใน nsurlsessionDelegate:
- ( void )URLSession:( NSURLSession *)session
task:( NSURLSessionTask *)task
didReceiveChallenge:( NSURLAuthenticationChallenge *)challenge
completionHandler:( void (^)( NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler {
{
TSKPinningValidator *pinningValidator = [[TrustKit sharedInstance ] pinningValidator ];
// Pass the authentication challenge to the validator; if the validation fails, the connection will be blocked
if (![pinningValidator handleChallenge: challenge completionHandler: completionHandler])
{
// TrustKit did not handle this challenge: perhaps it was not for server trust
// or the domain was not pinned. Fall back to the default behavior
completionHandler ( NSURLSessionAuthChallengePerformDefaultHandling , nil );
}
}สำหรับข้อมูลเพิ่มเติมดูคู่มือการเริ่มต้นใช้งาน
TrustKit เป็นความพยายามร่วมกันระหว่างทีมงานมือถือที่ Data Theorem และ Yahoo ดูรายละเอียด AUTHORS
TrustKit เปิดตัวภายใต้ใบอนุญาต MIT ดู LICENSE สำหรับรายละเอียด