Spec-Zone .ru
спецификации, руководства, описания, API
|
Эта страница описывает и перечисляет средства защиты и улучшения, добавленные к Java номером основной версии от v1.4 до v6.
ОТМЕТЬТЕ: API и функции, описанные в этом документе, подвержены изменениям.
Следующие улучшения были добавлены к Java реализация GSS/Kerberos в Java SE 6.
des-cbc-md5
des-cbc-crc
des3-cbc-sha1
Запускаясь с Java SE 6, поддержка типа шифрования AES (AES128 и AES256) в Java GSS/Kerberos доступен. Это улучшает функциональную совместимость Java SE реализация Kerberos с другими реализациями Kerberos, такими как Солярис 10 и MIT Kerberos.libdefaults
раздел. Это определяется следующим образом со следующими тегами: default_tkt_enctypes, default_tgs_enctypes, permitted_enctypes.
aes128-cts
aes128-cts-hmac-sha1-96
(Тип шифрования AES256)aes256-cts
aes256-cts-hmac-sha1-96
ОТМЕТЬТЕ: платформа JCE в пределах JDK включает возможность осуществить ограничения относительно криптографических алгоритмов и максимальных криптографических сильных мест, доступных приложениям. Такие ограничения определяются в "файлах политики юрисдикции". Файлы политики юрисдикции, связанные в Java SE, ограничивают максимальную длину ключа. Следовательно, чтобы использовать тип шифрования AES256, Вы должны будете установить JCE crypto политика с неограниченной версией, чтобы позволить AES с 256-разрядным ключом.libdefaults
раздел в конфигурационном файле мог бы включать следующий.default_tkt_enctypes = aes128-cts des3-cbc-sha1 des-cbc-md5 des-cbc-crc
default_tgs_enctypes = aes128-cts des3-cbc-sha1 des-cbc-md5 des-cbc-crc
permitted_enctypes = aes128-cts des3-cbc-sha1 des-cbc-md5 des-cbc-crc
default_tkt_enctypes
используется, чтобы определить типы шифрования, чтобы использовать для сеансового ключа в билете выдачи билетов. Это используется клиентом, чтобы ограничить типы шифрования сеансовых ключей, которые будут использоваться, чтобы связаться с KDC. Значение по умолчанию des-cbc-md5 des-cbc-crc des3-cbc-sha1 aes128-cts
.default_tgs_enctypes
используется, чтобы определить типы шифрования, чтобы использовать для сеансового ключа в обслуживании билеты. Это используется клиентом, чтобы ограничить типы шифрования сеансовых ключей, которые совместно используются клиентом и сервером. Значение по умолчанию des-cbc-md5 des-cbc-crc des3-cbc-sha1 aes128-cts
.permitted_enctypes
используется, чтобы определить типы шифрования, разрешенные использоваться службой. Это используется сервером, чтобы ограничить типы шифрования сеансовых ключей, которые это примет. Значение по умолчанию des-cbc-md5 des-cbc-crc des3-cbc-sha1 aes128-cts
.des-cbc-md5
des-cbc-crc
des3-cbc-sha1
Запуск с Java, SE 6, поддержка шифрования RC4-HMAC вводит Java, GSS/Kerberos доступен. Это улучшает функциональную совместимость Java SE реализация Kerberos с другими реализациями Kerberos, такими как Windows, Солярис 10 и MIT Kerberos. Windows Активный Directoiory поддерживает RC4-HMAC как тип шифрования Kerberos по умолчанию.libdefaults
раздел. Это определяется следующим образом со следующими тегами: default_tkt_enctypes, default_tgs_enctypes, permitted_enctypes.
rc4-hmac
arcfour-hmac
arcfour-hmac-md5
Например, раздел libdefaults в конфигурационном файле мог бы включать следующий.default_tkt_enctypes = aes128-cts des3-cbc-sha1 rc4-hmac des-cbc-md5 des-cbc-crc
default_tgs_enctypes = aes128-cts des3-cbc-sha1 rc4-hmac des-cbc-md5 des-cbc-crc
permitted_enctypes = aes128-cts des3-cbc-sha1 rc4-hmac des-cbc-md5 des-cbc-crc
default_tkt_enctypes
используется, чтобы определить типы шифрования, чтобы использовать для сеансового ключа в билете выдачи билетов. Это используется клиентом, чтобы ограничить типы шифрования сеансовых ключей, которые будут использоваться, чтобы связаться с KDC. Значение по умолчанию des-cbc-md5 des-cbc-crc rc4-hmac des3-cbc-sha1 aes128-cts
default_tgs_enctypes
используется, чтобы определить типы шифрования, чтобы использовать для сеансового ключа в обслуживании билеты. Это используется клиентом, чтобы ограничить типы шифрования сеансовых ключей, которые совместно используются клиентом и сервером. Значение по умолчанию des-cbc-md5 des-cbc-crc rc4-hmac des3-cbc-sha1 aes128-cts
.permitted_enctypes
используется, чтобы определить типы шифрования, разрешенные использоваться службой. Это используется сервером, чтобы ограничить типы шифрования сеансовых ключей, которые это примет. Значение по умолчанию des-cbc-md5 des-cbc-crc rc4-hmac des3-cbc-sha1 aes128-cts
.OID "1.2.840.113554.1.2.2
использовать механизм Kerberos. Oid mechOid = new Oid("1.2.840.113554.1.2.2");
OID "1.3.6.1.5.5.2".
Oid mechOid = new Oid("1.3.6.1.5.5.2);
Эта функция позволяет приложениям Java использовать в своих интересах функции в собственной реализации GSS, доступной на платформе. Чтобы позволить Java GSS делегировать к собственной библиотеке GSS и ее списку собственных механизмов, установите системное свойство "sun.security.jgss.native" в истину. Когда включено, Java GSS искал бы собственную библиотеку GSS, используя собственное имя операционной системы, например, Солярис: libgss.so по сравнению с Linux: libgssapi.so. Если требуемая библиотека GSS имеет другое имя или не располагается в соответствии с каталогом для системных библиотек, то его полный путь должен быть определен, используя системное свойство "sun.security.jgss.lib".
Для Java SE 6, собственная поддержка GSS ограничивается Солярисом и Linux. Установка этих системных свойств на платформах, какая собственная интеграция GSS не поддерживается, будет проигнорирована.
В отличие от Java по умолчанию реализация GSS, которая полагается на KerberosLoginModule JAAS для начального учетного сбора, при использовании собственного GSS, начальные учетные данные, должна быть получена заранее, например, kinit, до вызова API JGSS.
Кроме того, выполняя операции как конкретная тема, например. Subject.doAs (...) или Subject.doAsPrivileged (...), будущим образом используемый GSSCredential должен быть добавлен к частному учетному набору Предмета. Иначе, операции GSS перестанут работать, так как никакие учетные данные не находятся.
com.sun.security.jgss.krb5.initiate com.sun.security.jgss.krb5.accept
Следующие улучшения были добавлены к Java реализация GSS/Kerberos в J2SE 5.0.
Тройной тип шифрования DES определяется в конфигурационном файле Kerberos под разделом "libdefaults". Это определяется как "des3-cbc-sha1" со следующими тегами: default_tkt_enctypes, default_tgs_enctypes, permitted_enctypes. "у dec3-cbc-sha1" есть следующие псевдонимы:
des3-hmac-sha1 des3-cbc-sha1-kd des3-cbc-hmac-sha1-kdНапример, раздел libdefaults в конфигурационном файле мог бы включать следующий.
default_tkt_enctypes = des3-cbc-sha1 des-cbc-md5 des-cbc-crc default_tgs_enctypes = des3-cbc-sha1 des-cbc-md5 des-cbc-crc permitted_enctypes = des3-cbc-sha1 des-cbc-md5 des-cbc-crcdefault_tkt_enctypes используется, чтобы определить типы шифрования, чтобы использовать для сеансового ключа в билете выдачи билетов. Это используется клиентом, чтобы ограничить типы шифрования сеансовых ключей, которые будут использоваться, чтобы связаться с KDC. Значением по умолчанию является "des-cbc-md5 des-cbc-crc des3-cbc-sha1"
default_tgs_enctypes используется, чтобы определить типы шифрования, чтобы использовать для сеансового ключа в обслуживании билеты. Это используется клиентом, чтобы ограничить типы шифрования сеансовых ключей, которые совместно используются клиентом и сервером. Значением по умолчанию является "des-cbc-md5 des-cbc-crc des3-cbc-sha1".
permitted_enctypes используется, чтобы определить типы шифрования, разрешенные использоваться службой. Это используется сервером, чтобы ограничить типы шифрования сеансовых ключей, которые это примет. Значением по умолчанию является "des-cbc-md5 des-cbc-crc des3-cbc-sha1".
Отправляя сообщение KDC, Java SE библиотека Kerberos будет использовать TCP, если размер сообщения будет выше udp_preference_list. Если сообщение будет меньшим чем udp_preference_list, то UDP попробуют самое большее три раза. Если KDC укажет, что запрос является слишком большим, Java SE, то библиотека Kerberos будет использовать TCP.
С этой функцией, если Krb5LoginModule получает билет с истекшим сроком из кэша билета, TGT будет автоматически возобновлен и добавлен к Предмету вызывающей стороны, кто запрашивал билет. Если билет не может быть возобновлен ни по какой причине, то Krb5LoginModule будет использовать свой сконфигурированный обработчик обратного вызова, чтобы получить имя пользователя и пароль, чтобы получить новый TGT.
Чтобы использовать эту функцию, сконфигурируйте Krb5LoginModule, чтобы использовать кэш билета и установить недавно представленную опцию renewTGT в true. Вот пример конфигурационного файла входа в систему JAAS, который запрашивает возобновление TGT.
server { com.sun.security.auth.module.Krb5LoginModule required principal=principal@your_realm useTicketCache=true renewTGT=true; };Отметьте что, если renewTGT устанавливается в истину, то useTicketCache должен также быть установлен в истину; иначе, это приводит к ошибке конфигурации.
com.sun.net.ssl.server com.sun.net.ssl.clientКогда приложение JSSE будет использовать комплекты шифра Kerberos без явной программы JAAS, провайдер SunJSSE будет использовать эти имена индексов, чтобы найти и сконфигурировать модуль входа в систему JAAS, чтобы получить необходимые учетные данные Kerberos. Например, у такого приложения мог бы быть следующий конфигурационный файл JAAS.
com.sun.net.ssl.server { com.sun.security.auth.module.Krb5LoginModule required principal=service_principal@your_realm useKeyTab=true keyTab=keytab_name storeKey=true; };Если запись не будет найдена, значение по умолчанию, "то другое" имя индекса будет использоваться. Имя службы для TLS является "узлом". Например, у службы TLS, работающей на машине под названием "raven.example.com" в области под названием "KRBNT-OPERATIONS.EXAMPLE.COM", было бы имя принципала службы
host/raven.example.com@KRBNT-OPERATIONS.EXAMPLE.COMНет никаких ограничений на клиент TLS; это может использовать любое допустимое имя принципала Kerberos.
Когда приложение JSSE использует комплекты шифра Kerberos с явной программой JAAS, оно может использовать любое имя индекса, включая тех упомянутых выше.
java.security.krb5.kdc
и java.security.krb5.realm
. В предыдущих выпусках только вступили бы в силу изменения к значениям конфигурации Kerberos, когда приложение было перезапущено. В 1.4.2 выпусках платформы Java, новой булевой опции refreshKrb5Config
может быть определен в записи для Krb5LoginModule
в конфигурационном файле JAAS. Если эта опция устанавливается в true
, значения конфигурации будут обновлены перед login
метод Krb5LoginModule
вызывается.
С этими 1.4.2 выпусками реализация Sun Kerberos повторит с ведомым KDC (), если они будут определены. Ведомый KDCs может быть определен в конфигурационном файле Kerberos или через список KDCs, разделенного двоеточием (:
) в системном свойстве java.security.krb5.kdc
.
В текущих 1.4.2 выпусках реализация Sun Kerberos теперь поддерживает автоматическую нейтрализацию к TCP. Поэтому, если запрос билета Kerberos, используя сбои UDP и KDC возвращает код ошибки KRB_ERR_RESPONSE_TOO_BIG
, TCP является автоматически транспортом по умолчанию.
Ранее, при использовании Java Универсальные Службы безопасности (JGSS) по Kerberos V5, если
useSubjectCredsOnly
свойство было установлено в истину, Билет Выдачи билетов (TGT) был получен от Предмета и использовался, чтобы установить Контекст защиты GSS. Полученный билет службы не был сохранен в Предмете. Теперь билет службы также сохранен в Предмете если useSubjectCredsOnly
истина.
Если бы клиентское приложение перерывает частные учетные данные Предмета, в предыдущих выпусках это нашло бы только TGT. С этого выпуска это также сочтет любой билет (ы) Службы полученным.
Отчет об ошибках, связанный с этим изменением, 4688866.