本身命令行很简单:
openssl x509 -in utp_test_verify_sign.cer -inform PEM -out cert.der -outform DER
在命令行中进入到openssl.exe所在目录可以直接调用该命令
但是在目录中有Visual Studio 2010
这个带空格的文件夹,导致了失败
在windows下可以直接包含空格解决这个问题"Visual Studio 2010"
但是后面的utp_test_verify_sign.cer
及cert.der
加上有"Visual Studio 2010"
目录却不能解决该问题
然后参考了很多网上资料
最终解决是https://blog.csdn.net/michaelzhou224/article/details/12708333中的第一条
文中写到:
解决空格问题的几种方案中的第一种能够解决这个问题
1.使用 “ ”来替代一个含有空格的文件以及目录:
jorncess red black 可以这样来表示: jorncess” “red” ”black
2.使用单引号来表示
对于有空格文件来进行重命名
例如文件夹 oracle install.tar
你在安装时直接使用这个名字安装,会报错,如找不到oracle.tar文件和找不到install.tar文件,原因就是安装包名字有空格
解决:可以用单引号扩住这个文件 tar -zxvf oracle install.tar
【esc键下面的解释键】即可解决
延伸:Linux里不建议建立带有空格的文件夹,相信这种文件是从外面拷贝过来的,以后对这种文件夹的操作可以拷贝过来后重命名为Linux标准的文件名或者在使用时用点引号扩住。
3.使用折号来进行转义
可以使用加英文的引号 cd /home/“my doc”
也可以: cd a\ b \ 如果在行末,是说明本行还未结束,下面一行和本行是一起的意思. – 就是选项的开始,一般一个字母的选项用 - 开头,多个字母的就用 – 开头.
“\”后如果是回车,不换行的话可能省略;但要是其它字符,就不能省略。 “\”告诉系统后面跟着的字符为原意,不是命令。
比如有个文件名中带有空格,就要在空格前加一个“\”。 文件名的方法应该与文件夹一样。
最终生成的效果:
D:\Documents"Visual Studio 2010"\Projects\LZ_UTP\Debug\openssl.exe x509 -in D:\Documents\Visual" “Studio” “2010\Projects\LZ_UTP\Debug\utp_test_verify_sign.cer -inform PEM -out D:\Documents\Visual” “Studio” "2010\Projects\LZ_UTP\Debug\utp_test_verify_sign.der -outform DER
估计openssl本身以前是linux下的,后面才在windows下使用导致的