我正在尝试从正在运行的服务器生成一个cert.pem。我使用的命令是:
echo "" | openssl s_client -showcerts -prexit -connect 127.0.0.1:4709 2>/dev/null | sed -n echo '/BEGIN\CERTIFICATE/,/END\ CERTIFICATE/p' | tac | sed -n -e '1,/BEGIN/!d;p' | tac > cert.pem
但我收到:
sed:无法读取/BEGIN\CERTIFICATE/,/END\CERTIFICATE/p:没有这样的文件或目录
如果我只使用命令:
openssl s_client -showcerts -prexit -connect 127.0.0.1:4709 2>/dev/null
它使用密钥从服务器返回信息。
有谁能帮我为什么我的命令没有执行?
谢谢!
最佳答案
此命令对我有效(在openbsd上执行):
echo "" | openssl s_client -showcerts -prexit -connect 127.0.0.1:4709 2>/dev/null | sed -n '/BEGIN CERTIFICATE/,/END CERTIFICATE/p' | tac | sed -n -e '1,/BEGIN/!d;p' | tac
如果引号中有刺,则不需要转义空格。
在第一次“sed-n”之后不需要回声
如果有人尝试此命令但没有tac,请使用命令:
perl -pe 'print reverse <>'
还要使用正确的主机名和端口。
所以新命令(不带
tac
)是:echo "" | openssl s_client -showcerts -prexit -connect 127.0.0.1:4709 2>/dev/null | sed -n '/BEGIN CERTIFICATE/,/END CERTIFICATE/p' | perl -pe 'print reverse <>' | sed -n -e '1,/BEGIN/!d;p' | perl -pe 'print reverse <>'
关于linux - Linux证书生成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46980790/