Openssl:cat:/ dev / fd / 63:没有这样的文件或目录

我尝试使用创build证书签名请求(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:没有这样的文件或目录

未知的选项-reqexts任何想法?

注意/dev/fd/63/dev/fd/63之间的区别。 额外的空间很重要。 /dev/fd/63是一个可以工作的绝对path。 而/dev/fd/63是一个相对path。 可能您当前的目录不包含名为的子目录

名字中的空格,因为这是你所要求的。 要注意的部分命令是这样的: \ <(

序列\是一个转义空间, <(用于运行一个输出到pipe道的子shell。

那么会发生什么呢?

  1. 子shell以stdout指向一个pipe道开始。
  2. 该pipe道的读取结束名称恰好是/dev/fd/63
  3. shell按照您的要求预先设置一个空间。
  4. shell使用不存在的文件名/dev/fd/63调用cat
  5. cat报告错误。

从命令中删除\肯定会使该错误消息消失。