<div dir="ltr"><div class=""></div><div class="">Hello,<br><br></div><div class="">It seems there may be a bug in the Windows-ROOT store implementation [1], which prevents a number of certificates from being used.<br><br></div>
<div class="">For example, a Windows 7 machine with the default certificates list should have the "UTN-USERFirst-Hardware" CA certificate. However, when listing the contents of the "Windows-ROOT" keystore, it cannot be found.<br>
<br></div><div class="">I haven't looked into the source code for this implementation, but I think this is due to the fact that the certificate's "Friendly Name" (in Windows terminology) is used as the alias name in the keystore. Unfortunately, this friendly name is not unique, so some certificates would be overwritten in the map implemented in the keystore (or a similar data structure, I presume).<br>
</div><div class=""><br></div><div class="">Indeed, the certificate with "CN = UTN-USERFirst-Object" and the one with "CN = UTN-USERFirst-Hardware" both use the "USERTrust" friendly name (so do other UTN certificates).<br>
<br></div><div class="">If you change the friendly name manually to something different, it is then visible via the keystore. To try this, run mmc.exe, add the "Certificates" snap-in for the current user, open "UTN-USERFirst-Hardware" in the "Trusted Root Certification Authorities" list, and edit its "Friendly Name" in the details panel.<br>
<br></div><div class="">By listing all the aliases in the Windows-ROOT keystore, looking for duplicate names and comparing with the number in the Windows list, it appears there are about 60 certificates hidden this way and unusable (22 aliases that have multiple certificates).<br>
<br></div><div class="">Perhaps a way to fix this bug would be to add a number to the alias name if the friendly name has already been seen, when loading the Windows store.<br><br></div><div class="">Best wishes,<br><br>Bruno.<br>
</div><div class=""><br><br>[1]: <a href="http://www.oracle.com/technetwork/articles/javase/security-137537.html">http://www.oracle.com/technetwork/articles/javase/security-137537.html</a><br></div></div>