iOS対応Https
2889 ワード
アップルは17年の1月1日の審査でATSを強制的に開くことを要求したため、各アプリケーションのプログラマーはhttpsの適合を開始した.弊社の相性をご紹介します.原理:HTTPS接続の確立過程は大体、クライアントとサービス側が接続する時、サービス側は1つの証明書を返して、クライアントの中に信頼された証明書機構のルート証明書が保存して、これらのルート証明書でサービス側が返した証明書に対して検証を行って、経験証は証明書が信頼できるならば、pre-master secretを生成して、この証明書の公開鍵で暗号化してサービス側に送信し、サービス側は秘密鍵で復号してpre-master secretを得、あるアルゴリズムに基づいてmaster secretを生成し、クライアントも同様にこのアルゴリズムに基づいてpre-master secretからmaster secretを生成し、その後、双方の通信はこのmaster secretで伝送データを暗号解読する.
開発:我々の応用は猿題ライブラリを用いたネットワーク要求であり,猿題ライブラリはAFNetworkingに基づいてカプセル化されているため,httpsの検証は主にAFSecurityPolicyモジュールである.
もしあなたが私と同じように猿題庫のフレームワークを使っていたら、あなたはこのようにする必要があります.
これでほぼ終わりです.このときサードパーティの共有や統計のあるsdkを使うなら、sdkを交換すればいいです.httpを追加できない場合はplistに説明を追加する必要があります.
サーバがcdnまたはossオブジェクトに格納されている場合、アリクラウドに証明書を添付すればよいので、秘密鍵をアップロードする必要があります(これは少し心配です)、彼のデフォルトの構成はhttpとhttpをサポートしているので、古いユーザーには影響しません.httpダウンロードに変更すると、証明書検証を使用できますが、ダウンロードを容易にするためには、このステップはありません.NSURLConnectionのコールバックでは、これだけです.
アップルがこのようにするのも、ユーザーのデータセキュリティとプライバシーのためで、多くのメーカーや開発者を不快にさせているが、長期的に見れば大勢の傾向にあるので、苦労してすぐに似合うようにしましょう.补充:実はクライアントはHttpsに适合して证明书を强制しなければならないことはなくて、直接URLを交换すればいいです.
開発:我々の応用は猿題ライブラリを用いたネットワーク要求であり,猿題ライブラリはAFNetworkingに基づいてカプセル化されているため,httpsの検証は主にAFSecurityPolicyモジュールである.
/**
*/
@property (readonly, nonatomic, assign) AFSSLPinningMode SSLPinningMode;
/**
*/
@property (nonatomic, strong, nullable) NSArray *pinnedCertificates;
/**
*/
@property (nonatomic, assign) BOOL allowInvalidCertificates;
/**
*/
@property (nonatomic, assign) BOOL validatesDomainName;
/**
, bundle cer
*/
+ (instancetype)defaultPolicy;
/**
*/
- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust
forDomain:(nullable NSString *)domain;
もしあなたが私と同じように猿題庫のフレームワークを使っていたら、あなたはこのようにする必要があります.
// HTTPS
YTKNetworkConfig *config = [YTKNetworkConfig sharedInstance];
config.baseUrl = @"";
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"" ofType:@""];
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
config.securityPolicy.allowInvalidCertificates = YES;
config.securityPolicy.validatesDomainName = NO;
config.securityPolicy.pinnedCertificates = @[certData];
これでほぼ終わりです.このときサードパーティの共有や統計のあるsdkを使うなら、sdkを交換すればいいです.httpを追加できない場合はplistに説明を追加する必要があります.
sina.com.cn
NSIncludesSubdomains
NSThirdPartyExceptionAllowsInsecureHTTPLoads
NSExceptionMinimumTLSVersion
TLSv1.0
NSThirdPartyExceptionRequiresForwardSecrecy
サーバがcdnまたはossオブジェクトに格納されている場合、アリクラウドに証明書を添付すればよいので、秘密鍵をアップロードする必要があります(これは少し心配です)、彼のデフォルトの構成はhttpとhttpをサポートしているので、古いユーザーには影響しません.httpダウンロードに変更すると、証明書検証を使用できますが、ダウンロードを容易にするためには、このステップはありません.NSURLConnectionのコールバックでは、これだけです.
- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
//
NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
[[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
}
アップルがこのようにするのも、ユーザーのデータセキュリティとプライバシーのためで、多くのメーカーや開発者を不快にさせているが、長期的に見れば大勢の傾向にあるので、苦労してすぐに似合うようにしましょう.补充:実はクライアントはHttpsに适合して证明书を强制しなければならないことはなくて、直接URLを交换すればいいです.