Как я импортирую новый Java сертификат CA, не используя keytool утилиту командной строки?

Вы можете использовать одно из следующих выражений, чтобы соответствовать одной букве:

(?![\d_])\w

или

\w(?<![\d_])

Здесь я соответствую \w, но проверьте, что [\d_] не соответствует ни до, ни после этого.

Из документов:

(?!...)
Matches if ... doesn’t match next. This is a negative lookahead assertion. For example, Isaac (?!Asimov) will match 'Isaac ' only if it’s not followed by 'Asimov'.

(?<!...)
Matches if the current position in the string is not preceded by a match for .... This is called a negative lookbehind assertion. Similar to positive lookbehind assertions, the contained pattern must only match strings of some fixed length and shouldn’t contain group references. Patterns which start with negative lookbehind assertions may match at the beginning of the string being searched.
8
задан Alexander Ljungberg 30 October 2009 в 15:41
поделиться

4 ответа

Я не знаю, возможно ли это, но вы могли бы реализовать свой собственный TrustManager, чтобы разрешить это соединение или этот CA. Вот основы.

2
ответ дан 6 December 2019 в 00:07
поделиться

Вы всегда можете вызвать KeyTool как процесс Runtime.exec (...) .

1
ответ дан 6 December 2019 в 00:07
поделиться

Если вы хотите установить сертификат в хранилище ключей доверенного корня на настольном компьютере, вам потребуется разрешение на это. То же самое и с keytool , вам нужен пароль для доступа к хранилищу ключей доверенного корня. Если вы хотите быть быстрым и грязным, вы можете

  • записать сертификат в файл или поток байтов или что-то еще
  • импортировать, используя KeyTool class ( sun.security.tools .KeyTool )

Но ИМХО, если сертификат недействителен, то он не заслуживает доверия. Я бы сказал, что для этого есть веская причина.

0
ответ дан 6 December 2019 в 00:07
поделиться

IMHO, Sun не предоставила keytool через API, прежде всего, чтобы не дать разработчикам изменить набор доверенных центров сертификации. Я могу представить, как злоумышленники используют такой код для вставки собственных корневых сертификатов в хранилище доверенных сертификатов, компрометируя саму модель хранилища доверенных сертификатов.

Фактически, если вы посмотрите на источник класса KeyTool (пакет sun.security.tools ), он не только окончательный, но и имеет частный конструктор, не позволяющий любому вызывающему объекту создать экземпляр класса KeyTool из кода. KeyTool действительно имеет основной метод, что делает командную строку (и, следовательно, пользователя ОС), возможно, единственным способом, которым можно инициализировать KeyTool и взаимодействовать с ним.

Единственными (упрощенными) подходами, оставшимися, были бы:

  • Инициализировать keytool как процесс из приложения, и передайте аргументы командной строки для установки сертификата корневого ЦС. Само по себе это плохая идея, и я бы рекомендовал уведомить пользователя о том, что происходит.
  • Избегайте использования keytool и вместо этого предоставьте пользователям инструкции по установке корневого CA с помощью Keyman или KeyTool IUI . Говоря о себе только здесь, я предпочитаю последнее.
1
ответ дан 6 December 2019 в 00:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: