Мы пытаемся установить новый сертификат, выданный правительством, который не работает.
Код работает на сервере Java EE, который читает сертификат и извлекает открытый ключ.
//ks is Keystore
ks.load(new FileInputStream("/tmp/cert.pfx"), "password".toCharArray());
Загрузка сертификата в порядке. Если мы посмотрим на ks.size()
, возвращается 1.
Если мы перечислим псевдонимы, мы также увидим значение псевдонима.
Enumeration<?> en = ks.aliases();
String alias = (String)en.nextElement();
Однако, если мы извлечем сертификат, используя псевдоним, мы получим нулевое значение
X509Certificate x509cert = ((X509Certificate)ks.getCertificate(alias));
x509cert
является нулевым в этой точке.
Еще несколько очков:
Это выданный правительством сертификат. Если мы изменим псевдоним на значение открытого текста, используя openssl, он будет работать нормально. Исходное значение - GUID.
Если мы проводим тестирование с использованием тестовой программы на локальном ПК с использованием Java SE, оригинал
сертификат работает - мы можем извлечь открытый ключ из сертификата, используя псевдоним.
Прошлые сертификаты работали нормально. Мы изменили на новый сертификат только потому, что срок действия старого сертификата истек.
Новый сертификат не работает только в среде Java EE. Поэтому я рассматриваю это как комбинацию чего-то в сертификате вместе со средой, в которой он работает.
Есть идеи, что может быть не так, или способ устранить это?