Incomplete certificate chain on Windows servers
Users with Windows servers may sometimes receive an "untrusted connection" error, when connecting to their websites, despite the fact that a PKCS#7 certificate with the full chain was imported on the server. The issue is more frequent on mobile devices, rather than on desktop machines, and occurs most commonly with Comodo certificates.
When checking the certificate installation in an online checker, you will see that the certificate is returned with one intermediate.
To understand what causes the issue and how to overcome it, we will provide a better understanding on how Windows servers work with SSL certificates. First, remember that Windows servers do not return root certificates during SSL handshake and they build up certificate chains using the shortest way they can find.
Let us investigate this issue using the example of a Comodo PositiveSSL certificate. PositiveSSL (and other Comodo certificates) has two variants of CA chain. One ends up with SHA-1 root certificate and the other is completed by a newer SHA-2 root, which is not included in trusted stores of most mobile devices and might be missing in old versions of desktop browsers.
Newer versions of Windows servers contain both AddTrust External CA Root (SHA-1 root) certificates and Comodo RSA Certification Authority (SHA-2 root). As you see from the screenshot above, the chain that ends up with SHA-2 root is shorter. Therefore, the server will prefer the chain file that ends up with Comodo RSA Certification Authority. Taking into account that the root certificate is not sent by the server gives us the end-entity certificate with one intermediate submitted to client and possible security warnings about the certificate being untrusted.
In order to overcome the issue, you’ll need to disable the usage of the root certificate that prevents building a proper certificate chain. Follow the steps below:
- Press Win+R, type in mmc and click OK to open Microsoft Management Console. Make sure that you are logged in as administrator.
- Click on File and choose Add/Remove Snap-in option.
- Select Certificates and click Add.
- Choose Computer account, and then Next.
- Select Local Computer radio button and click Finish.
- Click OK to apply the changes.
This will open a certificate manager, where you will be able to see the certificates added to the trusted stores (root and intermediate certificates that are integrated to a Windows server).
- Expand the Trusted Root Certification Authorities store and click on the Certificates folder. You will see all root certificates imported to your server here. The certificate we are interested in will be also here.
- Right-click on the required certificate and click on Properties.
- Put the radio-button on Disable all purposes for this certificate, then click on Apply and OK. The changes should be implemented instantly.
Note: Alternatively, you can delete the certificate from the store, however, there is a chance it will appear again after the Windows server restart.
This should resolve the issue with the certificate chain returned by the Windows server and remove all the warnings in browser.