Я пытаюсь удалить сертификат из хранилища сертификатов «Доверенные корневые центры сертификации». Этот магазин можно получить из java, используя провайдера SunMSCAPI
, и согласно oracle's documentation, вы должны иметь возможность читать и писать в «Личный» магазин и «Доверенные корневые центры сертификации». По крайней мере, моя интерпретация предложенияУдалить сертификат из хранилища сертификатов MS с Java и SunMSCAPI
Кроме того, изменения отражаются сразу же после внесения изменений в хранилище ключей, таких, как KeyStore.setKeyEntry (...), KeyStore.deleteEntry (...).
Однако при попытке удалить запись я получаю java.security.KeyStoreException: Access is denied.
Мой код выглядит
final KeyStore msCertStore = KeyStore.getInstance("Windows-ROOT", "SunMSCAPI");
msCertStore.load(null, null);
if (msCertStore.containsAlias(mCertificateName))
{
getLogger().info("Removing certificate with alias '{}' from store '{}'", mCertificateName,
mCertificateStore.getStoreName());
msCertStore.deleteEntry(mCertificateName);
}
и что я получаю
Exception in thread "main" java.security.KeyStoreException: Access is denied.
at sun.security.mscapi.KeyStore.removeCertificate(Native Method)
at sun.security.mscapi.KeyStore.engineDeleteEntry(KeyStore.java:542)
at sun.security.mscapi.KeyStore$ROOT.engineDeleteEntry(KeyStore.java:68)
at java.security.KeyStore.deleteEntry(Unknown Source)
at my.playground.DeleteCertificateCommand.execute(DeleteCertificateInstallerCommand.java:67)
...
учетной записи пользователя, который используемый для выполнения кода, является локальным администратором, и я могу вручную удалить сертификат из хранилища в Windows certmg r.msc GUI. Но он не будет работать с использованием вышеуказанного кода.
Удаление сертификата из Личного магазина Windows-MY
работает, похоже, связано с правами доступа. Но какие права мне нужны?
КСТАТИ: Операционная система Windows Server 2008 RC2
В Windows Vista, так как идентификатор пользователя является "Администратор" не всегда достаточно, некоторые вещи нужно конкретный процесс, чтобы быть ** повышенным **, а также, по-видимому, немного уменьшить количество людей, пострадавших от загружаемых дисков, которые молчали в их системе. Я знаю, что на Vista и Seven certmgr появляется запрос на повышение. Есть много способов поднять, но как простой тест, если это консольный режим (java not javaw), попробуйте rightclick CMD RunAsAdministrator (даже если вы уже вошли в систему, я знаю), тогда ваша java под этим. –
Я поместил командную строку в bat-файл и выбрал «Right-Click -> Run as Administrator» -> Тот же результат: Access denied Я запускаю команду в командной строке Windows, используя runas для запуска команды под local Adminstrator accoung -> Тот же результат: Доступ запрещен На самом деле мне не предлагается выполнить certmgr.msc с повышенными правами при открытии его с помощью обычной учетной записи домена ... BTW: Операционная система - Windows Server 2008 RC2 – dpr