OpenSSL对中文的支持不是很好,若有中文信息需要特别处理。
1、使命令行cmd支持utf-8
在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集。
如果想正确显示UTF-8字符,可以按照以下步骤操作:
1)打开CMD.exe命令行窗口
2)通过 chcp命令改变代码页,UTF-8的代码页为65001
chcp 65001
执行该操作后,代码页就被变成UTF-8了。但是,在窗口中仍旧不能正确显示UTF-8字符。
3)修改窗口属性,改变字体
在命令行标题栏上点击右键,选择"属性"->"字体",将字体修改为True Type字体"Lucida Console",然后点击确定将属性应用到当前窗口。
2、用openssl命令生成证书
1)OpenSSL建立自己的CA
修改openssl.cnf文件(见附件),保存为utf-8编码格式,将文件放置到OPENSSL_CONF环境变量对应路径。
openssl req -utf8 -new -x509 -keyout ca.key -out ca.crt -days 7120
2)生成证书私钥(key文件)
重新修改openssl.cnf,用于生成子证书
openssl genrsa -des3 -out server.key 1024
运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!
去除key文件口令的命令:
openssl rsa -in server.key -out server.key
3)生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可.
openssl req -utf8 -new -key server.key -out server.csr
4)用生成的CA的证书为刚才生成的server.csr文件签名.
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key-days 3650
5)将私钥秘cer证书合并成p12格式
openssl pkcs12 -export -inkey server.key -in server.crt -CAfile ca.crt -chain -out server.pfx -name"SubFriendlyName" -caname "CAFriendlyName"
参考:http://blog.csdn.net/jinhill/article/details/2573777
http://blog.csdn.net/gloomuu/article/details/4456501