我想从节点应用程序内的 S/MIME 文件中提取签名者。我使用(child_process.spawn()
,它运行这个命令
openssl smime -verify -CAfile c_root.pem -inform DER -signer /proc/self/fd/1
它不起作用,因为输入和输出是套接字(而不是管道)。如果输出是管道,则相同的命令有效。
标准错误:
Verification successful
Error writing signers to /proc/self/fd/1
40C71EA94D7F0000:error:80000006:system library:BIO_new_file:No such device or address:crypto/bio/bss_file.c:67:calling fopen(/proc/self/fd/1, w)
40C71EA94D7F0000:error:10000080:BIO routines:BIO_new_file:no such file:crypto/bio/bss_file.c:75:
如果没有临时文件,如何执行此操作?
答案1
解决方法是包装/bin/sh
并通过管道传输到cat
.
sh -c "openssl smime -verify -CAfile c_root.pem -inform DER -signer /proc/self/fd/1 | cat"