Не найден доверенный сертификат при использовании Java для выполнения запроса по HTTPS

Основная проблема заключается в используемом вами сценарии. Переключение контекста очень затратно с точки зрения задержки. sleep 1переводит ваш скрипт в спящий режим. когда таймер заканчивается, процесс снова становится работоспособным, возможно, он также перераспределяется на другое ядро ​​вашего процессора (миграция ). Таким образом, в основном вы не опрашиваете /proc/statровно каждые 1000 мс, насколько вы можете указать это в своем сообщении.

Между прочим, это не очень хороший способ оценить ядро ​​RT.

Я действительно предлагаю вам использовать, например, sysjitterот Solarflare sysjitter openonload , который даст вам гораздо лучшие показатели того, как работает ядро.

Основная идея состоит в том, чтобы иметь бесконечный цикл, закрепленный на одном ядре (1 работающий поток на ядро ​​), который объединяет счетчик отметок времени (TSC )регистр ядра и сравнивает два следующих значения чтобы увидеть разницу, которая может происходить каждый раз, когда ядро ​​вытесняет запущенный процесс (предположительно 100 Гц ).

Таким образом, вы получите лучшее представление о системном джиттере вашего сервера и, возможно, решите немного больше его настроить.

Также вам следует обратить внимание на изоляцию процессора, чтобы иметь выделенное ядро ​​​​для вашего приложения и динамическую конфигурацию ядра, если ваш вариант использования требует такого улучшения.

Редактировать :Я предлагаю вам использовать awkтолько для всех ваших нужд с таким небольшим скриптом, как этот:

#!/usr/bin/awk 

BEGIN { 
    sum1=0;
    sum2=0;
    result=0;
    file="/proc/stat";



while (( getline < file ) > 0 ) {
    if ($1=="cpu1"){ sum1=$2+$3+$4+$5+$6+$7+$8+$9+$10+$11 }; 
    } 
    close(file) ;
    print  "firt time " sum1;
    system("sleep 10");

while (( getline < file ) > 0 ) {
        if ($1=="cpu1") { sum2=$2+$3+$4+$5+$6+$7+$8+$9+$10+$11 }
    }
    close (file)
    print "secont time " sum2;
    result=sum2-sum1;
    print "sum is " result/10;
}

Эта выборка выполняется в течение 10 секунд, а результат делится на десять, чтобы получить среднее время для сегментов длительностью 1 с.

0
15.09.2021, 11:56
2 ответа

JDK и JRE поставляются с собственной коллекцией доверенных сертификатов. Этот файл называется «cacerts», и его можно найти в JDK_HOME/jre/lib/security. readlink -f /bin/javaдолжен указывать, где находится домашний каталог JDK _.

Файл cacerts содержит список всех сертификатов от доверенных центров сертификации (ЦС ). Файл имеет формат JKS, поэтому вы можете манипулировать им с помощьюkeytool(другой команды, которая является частью JDK ). Вам потребуются права root для изменения файла.

Наиболее хорошо -известные центры сертификации уже являются частью файла cacerts. Поскольку вы столкнулись с исключением, в этом файле должен отсутствовать сертификат ЦС, используемый вашими конечными точками HTTPS. Вам потребуется извлечь сертификат ЦС из удаленной конечной точки и добавить его в файл cacerts. После этого перезапустите приложение, и оно должно работать должным образом.

Если вы не хотите изменять файл cacerts, вы также можете настроить собственное хранилище доверенных сертификатов. В этом подходе вы создаете хранилище доверенных сертификатов, содержащее сертификаты, которым вы хотите доверять, а затем используете свойства javax.net.ssl.trustStoreи javax.net.ssl.trustStorePassword, чтобы указать на него вашему приложению.

1
15.09.2021, 13:29

Хорошо, я только что нашел проблему и решение.

Проблема заключалась в том, что в моей папке безопасности (jre/lib/security )файлы внутри были неработающими ссылками на другие файлы, которых не существует.

Я пошел на домашнюю страницу оракула, загрузил jdk из java 8 linux и заменил все файлы в папке безопасности (, но не политику папки ).

0
15.09.2021, 14:25

Теги

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