Назад | Перейти на главную страницу

Openssl: cat: / dev / fd / 63: Нет такого файла или каталога

Я пытаюсь создать запрос на подпись сертификата (CSR), используя

openssl req -new -sha256 -key domain.key -subj "/" \ -reqexts SAN -config <(cat /System/Library/OpenSSL/openssl.cnf \ <(printf "[SAN]\nsubjectAltName=DNS:foo.com,DNS:www.foo.com"))

но появляется следующее сообщение об ошибке

cat: /dev/fd/63: No such file or directory
unknown option -reqexts

Любые идеи?

Обратите внимание на разницу между /dev/fd/63 и /dev/fd/63. Дополнительное пространство имеет значение. /dev/fd/63 это абсолютный путь, который будет работать. В то время как /dev/fd/63 относительный путь. Вероятно, ваш текущий каталог не содержит подкаталог с именем .

Пробел в имени, потому что это то, о чем вы просили. Часть команды, на которую следует обратить внимание, следующая: \ <(.

Последовательность \ это ускользнувшее пространство и <( используется для запуска подоболочки с выводом в канал.

Так вот что происходит.

  1. Подоболочка запускается со стандартным выводом, указывающим на канал.
  2. Имя читающего конца этой трубы оказывается /dev/fd/63
  3. Оболочка добавляет пробел к этому имени, как вы просили.
  4. Оболочка вызывает cat с именем файла /dev/fd/63, которого не существует.
  5. cat сообщает об ошибке.

Удаление \ из команды обязательно устранит это сообщение об ошибке.