Unable to find valid certification path to requested target - error even after cert imported
Не удается найти допустимый путь сертификации к запрошенной цели - ошибка даже после импорта сертификата
У меня есть Java-клиент, пытающийся получить доступ к серверу с самозаверяющим сертификатом.
Когда я пытаюсь отправить сообщение на сервер, я получаю следующую ошибку:
не удается найти допустимый путь сертификации к запрошенной цели
Проведя некоторое исследование по этому вопросу, я затем сделал следующее.
Сохранено доменное имя моего сервера в виде root.cer файла.
В JRE моего сервера Glassfish я запустил это:
keytool -import -alias example -keystore cacerts -file root.cer
Чтобы проверить, что сертификат был успешно добавлен в мой cacert, я сделал это:
keytool -list -v -keystore cacerts
Я вижу, что сертификат присутствует.
Затем я перезапустил Glassfish и повторил 'post'.
Я все еще получаю ту же ошибку.
У меня такое чувство, что это потому, что моя Glassfish на самом деле читает не cacert файл, который я исправил, а, возможно, какой-то другой.
У кого-нибудь из вас была эта проблема, и вы можете подтолкнуть меня в правильном направлении?
Переведено автоматически
Ответ 1
К сожалению, это может быть по-разному - и многие серверы приложений и другие java-"оболочки" склонны играть со свойствами и "по-своему" использовать цепочки ключей, а что нет. Так что, возможно, речь идет о чем-то совершенно другом.
чтобы посмотреть, поможет ли это. Вместо "все" также можно установить значение "ssl", key manager и trust manager - что может помочь в вашем случае. При установке значения "справка" на большинстве платформ будет отображаться что-то вроде приведенного ниже.
В любом случае - убедитесь, что вы полностью понимаете разницу между хранилищем ключей (в котором у вас есть закрытый ключ и сертификат, с помощью которого вы подтверждаете свою личность) и хранилищем доверия (которое определяет, кому вы доверяете) - и тот факт, что ваша собственная личность также имеет "цепочку" доверия к корню, которая отделена от любой цепочки к корню, которая вам нужна, чтобы выяснить, "кому" вы доверяете.
all turn on all debugging ssl turn on ssl debugging
The following can be used with ssl: recordenable per-recordtracing handshake print each handshake message keygen print key generation data session print session activity defaultctx print default SSL initialization sslctx print SSLContext tracing sessioncache print session cache tracing keymanager print key manager tracing trustmanager print trust manager tracing pluggability print pluggability tracing
handshake debugging can be widened with: data hex dump of each handshake message verbose verbose handshake message printing
recorddebugging can be widened with: plaintext hex dump of recordplaintext packet print raw SSL/TLS packets
/* * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * - Neither the name of Sun Microsystems nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
System.out.println(); System.out.println(cert); System.out.println(); System.out.println ("Added certificate to keystore 'jssecacerts' using alias '" + alias + "'"); }
Для получения дополнительной информации обратитесь к сайту RedHat.
Ответ 4
(перепечатка из моего другого ответа) Используйте утилиту cli keytool из дистрибутива программного обеспечения java для импорта (и доверия!) необходимых сертификатов