English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

iOSのhttps証明書の適用問題(AFNetworking)3.0を例に()

皆様ご存知の通り、アップルは言います、2017年から、httpのリソースを遮断し、httpsを強く推奨します

楼主が最近httpをhttpsに変更し、まだ手を付けていない人に一応共有します

1.証明書の準備

まず、バックエンドから証明書を取得します(SSL証明書、通常、httpsを設定すると言えば、バックエンドが証明書を提供します。彼らは証明書を提供することを知っています)。私たちが必要なのは.cerの証明書です。しかし、バックエンドが提供するのは.crtの証明書かもしれません。変換する必要があります:ターミナルを開きます。 -> cd 到.crt証明書路径 -> openssl x509 -in あなたの証明書.crt -out あなたの証明書.cer -outform der、証明書が準備できたら、プロジェクトにドラッグ&ドロップします。コピーすることを忘れないでください。

2.新しいクラスまたはメソッドを作成します

以下のコードは、楼主がFactoryUIというクラスに置いています

//httpsをサポート
+ (AFSecurityPolicy *)customSecurityPolicy
{
  //証明書を先にインポートし、証明書のパスを見つけます
  NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"あなたの証明書の名前" ofType:@"cer"];
  NSData *certData = [NSData dataWithContentsOfFile:cerPath];
  //AFSSLPinningModeCertificateは証明書検証モードを使用します
  AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
  //allowInvalidCertificatesは無効な証明書(自建証明書)を許可します。デフォルトはNOです
  //自建証明書の検証が必要な場合はYESに設定する必要があります
  securityPolicy.allowInvalidCertificates = YES;
  //validatesDomainNameはドメインの検証が必要かどうかを確認します。デフォルトはYESです;
  //証明書のドメインがリクエストするドメインと一致しない場合、この項目をNOに設定する必要があります;NOに設定された場合、サーバーが他の信頼できる機関から発行された証明書を使用しても接続を確立できますが、これは非常に危険であり、開けることをお勧めします。
  //NOに設定された場合、このような状況に使用されます:クライアントがリクエストするのはサブドメインであり、証明書には別のドメインが記載されています。SSL証明書のドメインは独立しており、証明書に登録されたドメインがwww.google.comの場合、mail.google.comは検証を通過できません;もちろん、お金があればワイルドカードドメインを登録することもできます。*.google.comですが、これは比較的高価です。
  //NOに設定された場合、対応するドメインの検証ロジックを自分で追加することをお勧めします。
  securityPolicy.validatesDomainName = NO;
  NSSet *set = [[NSSet alloc] initWithObjects:certData, nil];
  securityPolicy.pinnedCertificates = set;
  return securityPolicy;
}

3.AFNetWorkingのリクエストを修正(AFNetworking3.0を例に()

  AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  manager.responseSerializer = [AFHTTPResponseSerializer serializer];
  manager.requestSerializer.timeoutInterval = 5.0;
  [manager setSecurityPolicy:[FactoryUI customSecurityPolicy]];//たとえば2FactoryUIのクラスメソッドが言及されている場合

 ・・・以降も同じです

補足:App Transport Security Settingsは設定する必要があります

これでこの記事の全てが終わりました。皆様の学習に役立てば幸いです。また、ナイアラーチュートリアルのサポートを多くいただければと思います。

声明:この記事の内容はインターネットから取得され、著作権者に帰属します。インターネットユーザーが自発的に貢献し、自己でアップロードしました。このサイトは所有権を持ちません。また、人工的な編集は行われていません。著作権侵害を疑う内容が見つかった場合は、以下のメールアドレスにご連絡ください:notice#oldtoolbag.com(メールを送信する際には、#を@に変更してください。告発を行い、関連する証拠を提供してください。一旦確認がとれましたら、このサイトは即座に侵害を疑われるコンテンツを削除します。)

おすすめ