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
, чтобы достичь этого.