toblum / ESPTeamsPresence

Microsoft Teams presence light for ESP32
https://toblum.github.io/ESPTeamsPresence/
Mozilla Public License 2.0
127 stars 37 forks source link

Certificate verification failed #8

Closed alexbussiere closed 3 years ago

alexbussiere commented 3 years ago

I am using v0.15.1, and keep getting the error :

Polling presence failed, retry #0. Polling presence info ... [HTTPS] Auth token valid for 3538 s. [E][ssl_client.cpp:33] _handle_error(): [start_ssl_client():199]: (-9984) X509 - Certificate verification failed, e.g. CRL, CA or signature check failed [E][WiFiClientSecure.cpp:132] connect(): start_ssl_client: -9984 [HTTPS] Request failed: connection refused --> Availability: , Activity:

I have tried two different networks in case it was a connection issue (have had that on previous projects), but no luck. Have you run into this issue?

toblum commented 3 years ago

Hi @alexbussiere,

this happend due to mismatching SSL certificates. I have to package the certificate together with the code so that it matches with the one used by Microsoft. It seems that MS has changed the SSL certificates so that they don't match for all users. Unfortunately I haven't found a good solution for that so far. Could you please try out 0.14.0 release https://github.com/toblum/ESPTeamsPresence/releases/tag/v0.14.0 It's the same code but uses different certificates.

Greetigs Tobias

alexbussiere commented 3 years ago

I got around this issue by not passing the certificate to the connect function. This is less secure not validating the server's certificate, but for my case this doesn't pose any real risk

toblum commented 3 years ago

Hi @alexbussiere,

good to know that it works now.

Your solution sounds interesting, because I thought that it wouldn't work without certificate. Would you mind sharing the code snippet? Maybe I could add that as an configurable option.

Greetings Tobias

alexbussiere commented 3 years ago

Hi @toblum , it seems to work really well without setting up the certificate. I just commented out lines 21-30 of "request_handler.h"

/**
 * API request handler
 */
boolean requestJsonApi(JsonDocument &doc, String url, String payload = "", size_t capacity = 0, String type = "POST", boolean sendAuth = false)
{
    // WiFiClient
    WiFiClientSecure *client = new WiFiClientSecure;

    //     if (url.indexOf("graph.microsoft.com") > -1)
    // {
    //     Serial.println("Using graph certificate");
    //     client->setCACert(rootCACertificateGraph);
    // }
    // else
    // {
    //     Serial.println("Using login certificate");
    //     client->setCACert(rootCACertificateLogin);
    // }
toblum commented 3 years ago

Hi @alexbussiere,

thank you. I will try that out as an option for users. I thought that this wouldn't work, but never tried.

Greetings

programmer131 commented 3 years ago

i opened another issue, but just noticed this is same problem i'm facing, issue resolved by updating root ca certificate for graph.microsoft.com replace this certificate, i've downloaded from https://www.digicert.com/kb/digicert-root-certificates.htm

"-----BEGIN CERTIFICATE-----\n" \ "MIIF8zCCBNugAwIBAgIQCq+mxcpjxFFB6jvh98dTFzANBgkqhkiG9w0BAQwFADBh\n" \ "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" \ "d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH\n" \ "MjAeFw0yMDA3MjkxMjMwMDBaFw0yNDA2MjcyMzU5NTlaMFkxCzAJBgNVBAYTAlVT\n" \ "MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKjAoBgNVBAMTIU1pY3Jv\n" \ "c29mdCBBenVyZSBUTFMgSXNzdWluZyBDQSAwMTCCAiIwDQYJKoZIhvcNAQEBBQAD\n" \ "ggIPADCCAgoCggIBAMedcDrkXufP7pxVm1FHLDNA9IjwHaMoaY8arqqZ4Gff4xyr\n" \ "RygnavXL7g12MPAx8Q6Dd9hfBzrfWxkF0Br2wIvlvkzW01naNVSkHp+OS3hL3W6n\n" \ "l/jYvZnVeJXjtsKYcXIf/6WtspcF5awlQ9LZJcjwaH7KoZuK+THpXCMtzD8XNVdm\n" \ "GW/JI0C/7U/E7evXn9XDio8SYkGSM63aLO5BtLCv092+1d4GGBSQYolRq+7Pd1kR\n" \ "EkWBPm0ywZ2Vb8GIS5DLrjelEkBnKCyy3B0yQud9dpVsiUeE7F5sY8Me96WVxQcb\n" \ "OyYdEY/j/9UpDlOG+vA+YgOvBhkKEjiqygVpP8EZoMMijephzg43b5Qi9r5UrvYo\n" \ "o19oR/8pf4HJNDPF0/FJwFVMW8PmCBLGstin3NE1+NeWTkGt0TzpHjgKyfaDP2tO\n" \ "4bCk1G7pP2kDFT7SYfc8xbgCkFQ2UCEXsaH/f5YmpLn4YPiNFCeeIida7xnfTvc4\n" \ "7IxyVccHHq1FzGygOqemrxEETKh8hvDR6eBdrBwmCHVgZrnAqnn93JtGyPLi6+cj\n" \ "WGVGtMZHwzVvX1HvSFG771sskcEjJxiQNQDQRWHEh3NxvNb7kFlAXnVdRkkvhjpR\n" \ "GchFhTAzqmwltdWhWDEyCMKC2x/mSZvZtlZGY+g37Y72qHzidwtyW7rBetZJAgMB\n" \ "AAGjggGtMIIBqTAdBgNVHQ4EFgQUDyBd16FXlduSzyvQx8J3BM5ygHYwHwYDVR0j\n" \ "BBgwFoAUTiJUIBiV5uNu5g/6+rkS7QYXjzkwDgYDVR0PAQH/BAQDAgGGMB0GA1Ud\n" \ "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAGAQH/AgEAMHYG\n" \ "CCsGAQUFBwEBBGowaDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQu\n" \ "Y29tMEAGCCsGAQUFBzAChjRodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGln\n" \ "aUNlcnRHbG9iYWxSb290RzIuY3J0MHsGA1UdHwR0MHIwN6A1oDOGMWh0dHA6Ly9j\n" \ "cmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RHMi5jcmwwN6A1oDOG\n" \ "MWh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RHMi5j\n" \ "cmwwHQYDVR0gBBYwFDAIBgZngQwBAgEwCAYGZ4EMAQICMBAGCSsGAQQBgjcVAQQD\n" \ "AgEAMA0GCSqGSIb3DQEBDAUAA4IBAQAlFvNh7QgXVLAZSsNR2XRmIn9iS8OHFCBA\n" \ "WxKJoi8YYQafpMTkMqeuzoL3HWb1pYEipsDkhiMnrpfeYZEA7Lz7yqEEtfgHcEBs\n" \ "K9KcStQGGZRfmWU07hPXHnFz+5gTXqzCE2PBMlRgVUYJiA25mJPXfB00gDvGhtYa\n" \ "+mENwM9Bq1B9YYLyLjRtUz8cyGsdyTIG/bBM/Q9jcV8JGqMU/UjAdh1pFyTnnHEl\n" \ "Y59Npi7F87ZqYYJEHJM2LGD+le8VsHjgeWX2CJQko7klXvcizuZvUEDTjHaQcs2J\n" \ "+kPgfyMIOY1DMJ21NxOJ2xPRC/wAh/hzSBRVtoAnyuxtkZ4VjIOh\n" \ "-----END CERTIFICATE-----\n" \ "";

with this one

"-----BEGIN CERTIFICATE-----\n" "MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh\n" "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" "d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH\n" "MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT\n" "MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n" "b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG\n" "9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI\n" "2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx\n" "1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ\n" "q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz\n" "tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ\n" "vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP\n" "BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV\n" "5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY\n" "1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4\n" "NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG\n" "Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91\n" "8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe\n" "pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl\n" "MrY=\n" "-----END CERTIFICATE-----\n" ""

RickSeiden commented 3 years ago

i opened another issue, but just noticed this is same problem i'm facing, issue resolved by updating root ca certificate for graph.microsoft.com replace this certificate, i've downloaded from https://www.digicert.com/kb/digicert-root-certificates.htm

Thanks for this. I was getting an httpCode of -1 returned, and was going to log an issue, but decided to read through this post first. Changing the certificate worked for me as well.

toblum commented 3 years ago

Hi all,

thank you for contributing. I just released a new version 0.16.0 that contains the root certs from https://www.digicert.com/kb/digicert-root-certificates.htm as suggested by @programmer131. In my tests that works well and should be more stable.

Greetings Tobias

toblum commented 3 years ago

There is now also v0.17.0 that contains "firmware-nocertcheck.bin" that has certificate check disabled as shown by @alexbussiere. Use this version only if you'Re sure that this is OK for you. Communication is still encrypted.