Java-апплет с самозаверяющим сертификатом на OS X Mountain Lion

У нас есть апплет Java, который должен работать с полным доверием.

При разработке и во время предварительных тестов мы подписываем его с использованием самозаверяющего сертификата (производственная версия подписана с подлинным сертификатом подписи кода).

Но когда мы пытаемся запустить самозаверяющий апплет на предварительных условиях OS X 10.8, мы больше не можем позволить ему запускать его. Кнопка "Разрешить" просто отключена:

Disabled "Allow" button

Если я нажму "Show Details...", я могу выбрать "Всегда доверять" сертификату, но это не имеет значения:

enter image description here

Он работает с той же версией Java JRE на OS X Lion 10.7, поэтому я подозреваю, что это проблема с ОС, а не с JRE.

Есть ли способы обхода?

Я бы предпочел не использовать настоящий сертификат подписи кода для тестирования: подписание с реальным сертификатом подписи кода означает, что моя компания утверждает, что апплет является безопасным и ему следует доверять. Мы вряд ли можем утверждать, что до того, как мы его протестировали.

Ответы

Ответ 1

Это новая функция безопасности в Mac OS X, по умолчанию разрешено запускать только приложения из Mac Store и доверенных разработчиков. Fortunatelly, легко изменить, вы должны разрешить это в настройках Mac OS X.

Перейдите в раздел "Настройки" → "Безопасность и конфиденциальность" и нажмите "Замок", чтобы разрешить изменения.

Затем в "Разрешить приложения, загруженные с", выберите "Anywhere".

После этого кнопка в диалоговом окне Java будет включена.

Mac OS X Security & Privacy Preferences

Ответ 2

Если вы получили сообщение "Application Blocked by Security Settings", вам нужно перейти в System Preferences: Java: Security и либо добавить свой сайт в список исключений, либо уменьшить security level до Medium.

Ответ 3

OS X Lion вы можете вручную добавить сертификат в качестве доверенного корневого сертификата, используя встроенный инструмент Keychain Access. У меня нет доступа к OS X Mountain Lion, но я не знаю, будет ли он работать в Mountain Lion, но, похоже, стоит попробовать. Шаги в Lion:

  • Открыть доступ к Keychain (находится в папке /Applications/Utilities )
  • Нажмите "Файл" | Импорт товаров...
  • Измените целевую брелок для системы
  • Найдите файл сертификата и нажмите "Открыть"
  • Он скажет: "Вы хотите, чтобы ваш компьютер доверял знакам сертификатов [...] с этого момента?". Нажмите "Всегда доверять".

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

Я отмечаю, что ваш скриншот говорит: "Этот сертификат отмечен как надежный для этой учетной записи", что любопытно, потому что я ожидаю, что это будет приемлемым. Может быть, в OS X Mountain Lion пользовательские корневые сертификаты как-то имеют более низкий статус, чем официальные, распространяемые Apple? Если вы обнаружите, что приведенные выше действия не работают, вы можете попробовать добавить свой сертификат в официальный корневой брелок. Keychain Access не позволит вам это сделать, но я считаю, что вы можете использовать встроенный certtool, чтобы вручную отредактировать цепочку ключей, расположенную в /System/Library/Keychains/SystemRootCertificates.keychain, чтобы достичь этого.