Estoy implementando la fijación de SSL como un requisito de seguridad para un proyecto y el punto final HTTPS me está dando SslPolicyErrors. Ocurren los siguientes errores,
RemoteCertificateChainErrors
RevocationStatusUnknown
UntrustedRoot
Esto solo ocurre para nuestro punto final de control de calidad y no para nuestro punto final PROD, así que creo que podría haber un problema con el certificado. Ambos tienen una cadena de certificados.
Si ignoro estos problemas y solo compruebo que la clave pública certificate.GetPublicKeyString ()
coincide, ¿será segura o los piratas informáticos podrán falsificar nuestro certificado porque no estamos revisando la cadena?
Aquí está el código que comprueba si hay SslPolicyErrors que estoy considerando eliminar.
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;
}
Aquí está el código .NET de ejemplo de 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;
}