Что означает $NON-NLS-1$?

Вы инициализируете свой SSLContext с помощью массива null KeyManager.

Ключ-менеджер - это то, что обрабатывает сертификат сервера (на стороне сервера), и это то, вероятно, для установки при использовании javax.net.ssl.keyStore.

Однако, как описано в Справочном руководстве JSSE , использование null для первого параметра не делает то, что вам кажется подумать, что это делает:

Если параметр KeyManager [] имеет значение NULL, то для этого контекста будет определен пустой KeyManager. Если параметр TrustManager [] равен NULL, установленным поставщикам безопасности будет поиск наивысшей приоритетной реализации TrustManagerFactory, из которой будет получен соответствующий TrustManager. Аналогично, параметр SecureRandom может быть нулевым, и в этом случае будет использоваться реализация по умолчанию.

blockquote>

Пустое KeyManager не содержит сертификатов RSA или DSA. Поэтому все блоки шифрования по умолчанию, которые будут полагаться на такой сертификат, будут отключены. Вот почему вы получаете все эти сообщения « Игнорирование недоступных сообщений шифра », что в конечном итоге приводит к сообщению об « без шифрования вообще ».

Если вы хотите, чтобы ваше хранилище ключей использовалось в качестве хранилища ключей, вам нужно загрузить его и инициализировать KeyManagerFactory с помощью него:

    KeyStore ks = KeyStore.getInstance("JKS");
    InputStream ksIs = new FileInputStream("...");
    try {
        ks.load(ksIs, "password".toCharArray());
    } finally {
        if (ksIs != null) {
            ksIs.close();
        }
    }

    KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory
            .getDefaultAlgorithm());
    kmf.init(ks, "keypassword".toCharArray());

Использовать kmf.getKeyManagers() в качестве первого параметра для SSLContext.init().

Для двух других параметров, поскольку вы явно не запрашиваете аутентификацию клиентского сертификата, вы должны оставить доверительный менеджер значением по умолчанию (null) вместо копирования / вставки доверительного менеджера, который является потенциальную причину уязвимости, и вы также можете использовать значение по умолчанию null SecureRandom.

314
задан paulgreg 17 March 2009 в 12:34
поделиться

4 ответа

Они заставляют предупреждение замолчать, что Eclipse испускает, когда он встречается со строковыми литералами (и был настроен для жалобы).

идея состоит в том, что сообщения UI не должны быть встроены как строковые литералы, а скорее получены от файла ресурсов (так, чтобы они могли быть переведены, проверены, и т.д.). Следовательно, Eclipse может быть настроен для обнаружения строковых литералов, так, чтобы у Вас случайно не было отпуска невоплощенными строками UI в коде; однако, существуют строки, которые не должны быть воплощены (такие как regexps) и так,//, $NON-NLS-1$ дает Вам способ передать тот факт к компилятору.

365
ответ дан Aaron Maenpaa 4 November 2019 в 10:43
поделиться

Это используется Eclipse, чтобы указать, что строка не должна быть переведена, вероятно, потому что это не будет замеченным пользователями приложения.

9
ответ дан Kees de Kooter 4 November 2019 в 10:43
поделиться

Строка не переводима. Это говорит редактору Eclipse не отмечать строку, как не снабжено. Это важно для многоязычных приложений.

53
ответ дан McDowell 4 November 2019 в 10:43
поделиться

Это говорит компилятору не жаловаться на неизвлеченную строку, и что это не требует локализации.

5
ответ дан Tod 4 November 2019 в 10:43
поделиться
Другие вопросы по тегам:

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