Hi Cyberrobot,
Yes, wolfSSL requires that the root CA certificate be loaded in order to verify the peer's certificate. If there are intermediate certificates in the chain as well, but the peer doesn't send them, wolfSSL will need to have those intermediate certs loaded as well (in order to verify the integrity of the cert chain).
For example, if you have a cert chain that looks like:
RootCA -> IntCA -> Peer
If you only load RootCA into a wolfSSL server, and the peer only sends "Peer", wolfSSL won't be able to verify the chain unless "IntCA" is loaded as well.
It looks like https://www.microsoft.com is signed by the "Baltimore CyberTrust Root". It looks like you may have the wrong root CA for the microsoft server. Maybe they updated it after your cert bundle was created?
I usually use the "openssl s_client" command to view the certificate chain for a given server. For example, to view the cert chain for microsoft.com, you could do:
openssl s_client -connect microsoft.com:443 -showcerts
Which shows the cert chain and the root CA as the "Baltimore CyberTrust Root".
Best Regards,
Chris