Sto implementando il blocco SSL come requisito di sicurezza per un progetto e l'endpoint HTTPS mi fornisce SslPolicyErrors. Si verificano i seguenti errori,
RemoteCertificateChainErrors
RevocationStatusUnknown
UntrustedRoot
Questo si verifica solo per il nostro endpoint QA e non per il nostro endpoint PROD, quindi penso che potrebbe esserci un problema con il certificato. Entrambi hanno una catena di certificati.
Se ignoro questi problemi e ti basta controllare che la chiave pubblica certificate.GetPublicKeyString ()
corrisponda, sarà sicuro, o gli hacker saranno in grado di falsificare il nostro certificato perché non stiamo controllando la catena?
Ecco il codice che controlla SslPolicyErrors che sto considerando di rimuovere.
if (sslPolicyErrors != SslPolicyErrors.None) {
Debug.Log(sslPolicyErrors);
for(int i=0; i<chain.ChainStatus.Length;i++){
Debug.Log("-");
Debug.Log(chain.ChainStatus[i].Status);
Debug.Log(chain.ChainStatus[i].StatusInformation);
}
return false;
}
Ecco il codice .NET di esempio da OWASP.
ServicePointManager.ServerCertificateValidationCallback = PinPublicKey;
-
public static bool PinPublicKey(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) {
if (certificate == null || chain == null)
return false;
if (sslPolicyErrors != SslPolicyErrors.None)
return false;
// Verify against known public key within the certificate
String pk = certificate.GetPublicKeyString();
if (pk.Equals(PUB_KEY))
return true;
return false;
}