I am trying to replicate a web service and client that is currently working in a production environment but I cannot get it to work locally for debugging. The application has a login section that calls a web service that works in production but not locally. There is also a web site that uses the service and this works locally without any issues.
An exception is thrown when ever the login part is called from the client application. The login command is shown in the code section below.
When this line called an exception is thrown with with the following message:
"SOAP security negotiation with 'http://website.address/Service.svc/Service'
for target 'http://website.address/Service.svc/Service'
failed. See inner exception for more details."
and the inner message is:
"The X.509 certificate CN=website.address chain building failed. The certificate that was used has a trust chain that cannot be verified. Replace the certificate or change the certificateValidationMode.
The revocation function was unable to check revocation for the certificate."
So it seems that the problem is an SSL certificate issue but I can't figure out why the Certificate is not trusted. The certificate used by IIS is one I created and it appears to be valid when I view it, it states that it is intended for all application policies and that there is a private key that corresponds to the certificate and there is no 'X' mark indicating a bad cert.
The only differences I can see between this certificate and the one used on the production machine are the issuer (the local one was issued by "Root Agency" whereas the production one was purchased from a well known Certificate provider) and the intended use for the production one is only:
Ensures the identity of a remote computer
Proves your identity to a remote computer
It seems that the certificate is not being accepted so I tried have added the Certificate to the local machine in in the both local machine and user personal and trusted route certification authorities stores. I also added the Root Authority certificate to these to see if that was an issue.
The client on the local machine is able to connect to the production if I remove the URL / IP changes without any SSL issues.
The local environment has been replicated as close as possible to production i.e. same OS, URLs mapped to local IP addresses, identical IIS 6.0 configuration etc.
I have seen some other threads about this that suggest turning off the SSL validation for debugging but is not really appropriate for the type of debugging / testing we wish to do.
This may just be a simple SSL configuration problem as my knowledge of it is not that good but I would really appreciate some help in resolving this issue.
Hopefully this will be simple to resolve,
Using DocComms As New Threading.DocumentComms
DocComms.DriverServiceInstance.GetBasicUserInfo(LoginArgs.Balance, LoginArgs.RealName, My.Application.Info.Version.ToString(), Branding.Strings.Identity)