Linux证书生成

时间:2017-10-27 17:47:09

标签: linux bash ssl sed

我试图从正在运行的服务器生成一个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

它使用密钥从服务器返回信息。

任何人都可以帮我解释为什么我的命令没有运行?

谢谢!

1 个答案:

答案 0 :(得分:1)

此命令适用于我(在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 <>'