Можно ли изменить сертификат и цепочку сертификатов для существующей записи (секретного ключа) в хранилище ключей.Как я понимаю, сначала мне нужно удалить существующую запись, а затем сохранить тот же закрытый ключ с новым сертификатом и цепочкой.Это решение не подходит, так как я не знаю пароль для этой записи в хранилище ключей.
Решение до сих пор :
Генерация ключа и начальное хранилище:
KeyPair kp = generateRSAKeyPair();
X509Certificate selfSignedCert = makeSelfSignedCert(kp);
ks.load(...);
ks.setKeyEntry("entry1", kp.getPrivate(), PASSWORD, new X509Certificate[]{selfSignedCert});
ks.store(...);
После того, как CA отправит сертификат, я хочу:
ks.load(...);
ks.setCertificateEntry("entry1", caSignedCert);
ks.store(...);
Основная проблема заключается в том, что у меня нет нужного сертификата в то время, когда ключ хранится в хранилище ключей.Существует задержка между генерацией ключей и отправкой CA подписанных сертификатов.
Другой вариант - вообще не устанавливать сертификат, а после того, как CA подписывает CSR, добавить окончательный подписанный сертификат в хранилище ключей.Что-то вроде:
KeyPair kp = generateRSAKeyPair();
ks.load(...);
ks.setKeyEntry("entry1", kp.getPrivate(), PASSWORD);
ks.store(...);
// after some time
ks.load(...);
ks.setCertificateEntry("entry1", caSignedCert);
ks.store(...);
Но я не смог найти способ хранить закрытый ключ без связанного сертификата в хранилище ключей.Хранение закрытого ключа в другом месте также невозможно.
Потенциальным решением является хранение подписанного сертификата от CA до тех пор, пока пользователь не предоставит пароль для записи в хранилище ключей, а затем удаление существующей записи и создание новой записи с соответствующими сертификатами.Это решение не является идеальным, и я хотел бы не идти по этому пути.
Любые предложения приветствуются.