1
クライアント証明書で認証した後で証明書の固定を実行する必要はありますか?誰かが私にこれを説明することはできますか?クライアント証明書の検証と証明書のピン割り当ての組み合わせ
if (challenge.ProtectionSpace.AuthenticationMethod == NSUrlProtectionSpace.AuthenticationMethodClientCertificate)
{
Console.WriteLine("Client Cert!");
var options = NSDictionary.FromObjectAndKey(NSObject.FromObject(This._passphrase), SecImportExport.Passphrase);
NSDictionary[] importResult;
if (This?._certificate == null) return;
if (This?._passphrase == null) return;
var x509Certificate = new X509Certificate(This._certificate, This._passphrase);
SecStatusCode statusCode = SecImportExport.ImportPkcs12(This._certificate, options, out importResult);
var identityHandle = importResult[0][SecImportExport.Identity];
var identity = new SecIdentity(identityHandle.Handle);
var certificate = new SecCertificate(x509Certificate.GetRawCertData());
SecCertificate[] certificates = { certificate };
NSUrlCredential credential = NSUrlCredential.FromIdentityCertificatesPersistance(identity, certificates, NSUrlCredentialPersistence.ForSession);
completionHandler(NSUrlSessionAuthChallengeDisposition.UseCredential, credential);
return;
}
*Logic for SSL Pinning*
リターンなステートメントは、「clientcertificate要求とクライアント認証」の部分の後にありますので、証明書のピニングのためのロジックが実行されることはありませんので、この部分は、クライアントとの認証を行った後、obsoletであれば、私は自分自身を求めていました証明書。
説明をありがとう。私は、デバッグすることができないまま2-3時間の検索をした後、この問題を解決しました。DidReciveResponseというメソッドは、クライアント証明書に対して2回、サーバー証明書に対して2回呼び出されています。 –