Specific error message from the library
CompletedListGrpc.Core.RpcException: Status(StatusCode=Unavailable, Detail="Connect Failed")
- I'm particularly referring to this library: https://github.com/googleapis/google-cloud-dotnet/tree/master/apis/Google.Cloud.Firestore
- I'm having an issue with the google-cloud-firestore service particularly (although the issue might be occurring in another dependant library, perhaps authentication)
- The firewall in question is Palo Alto Networks. It has an enterprise certificate that's installed on enterprise workstations and trusted. The firewall essentially acts as a MITM to decrypt traffic for deeper analysis of TLS traffic.
When the firewall MITM feature is disabled for the firestore.googleapis.com the library works ok. When the MITM feature is enabled, it doesn't work.
Sub-questions:
1) Does the library code have a hardcoded certificate check? (I couldn't find one)
public static gaxgrpc::ServiceEndpoint DefaultEndpoint { get; } = new gaxgrpc::ServiceEndpoint("firestore.googleapis.com", 443);
- It doesn't make sense to hardcode the certificate, because certificates are renewed, and sometimes old ones are revoked.
- grpc is quite standard and shared beyond use by Google (See https://grpc.io/).
- It's reasonable to assume grpc doesn't include an explicit certificate for a downstream dependency
- If firestore was going to assert a certificate, it's reasonable to assume that would be done on this line of code along with the URL
2a) Does .Net Framework automatically trust certificates that are in the windows trust store? Is any code required to make this work?
It appears that .Net Framework works with Windows Certificate Store - see https://learn.microsoft.com/en-us/dotnet/framework/wcf/feature-details/working-with-certificates
2b) Perhaps the certificate is only trusted but the interactive user, and not the whole machine, and therefore service accounts don't see that certificate - I'll check this...
3) Will the library have a specific error about the certificate if that's the cause of a "Connect Failed"?