в
комбинация find xargs openssl останавливается с Could not read certificate

о
Команда xargs передает аргументы списком, а openssl часто ожидает один файл за раз или требует явного указания -in, а не чтения из потока. Также эта ошибка возникает, если среди путей попадаются файлы без прав доступа или с некорректным содержимым. [1, 2]

Точные решения проблемы:

1. обход через -exec (вместо xargs)
Выполняйте команду openssl для каждого файла отдельно с помощью встроенного флага find ... -exec. Это надежнее, если в путях к файлам есть пробелы:

find /path/to/certs -type f -name "*.pem" -exec openssl x509 -in {} -noout -text \;

2. Настройка xargs для обработки по одному файлу
Если нужно использовать именно xargs, добавьте флаг -t (для отладки - выведет выполняемую команду) и -I {} (чтобы openssl получал каждый файл отдельно):

find /path/to/certs -type f -name "*.pem" | xargs -I {} openssl x509 -in {} -noout -text

3. Проверка содержимого файлов
Откройте файл, на котором, и убедитесь, что он в формате PEM. Он должен начинаться со строки BEGIN CERTIFICATE. Если файл зашифрован (DER), его нужно конвертировать перед проверкой через OpenSSL. [1, 2]

Чтобы подобрать точную команду, уточните:

Какую конкретно задачу выполняете с помощью OpenSSL (проверка срока, конвертация)?
Есть ли пробелы или символы в именах файлов?
Какая версия Linux используется?

