OpenSSL对中文的支持不是很好,若有中文信息需要特别处理。

1、使命令行cmd支持utf-8

 在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集。
 如果想正确显示UTF-8字符,可以按照以下步骤操作:
 1)打开CMD.exe命令行窗口
 2)通过 chcp命令改变代码页,UTF-8的代码页为65001      

  1. chcp 65001  

   执行该操作后,代码页就被变成UTF-8了。但是,在窗口中仍旧不能正确显示UTF-8字符。
 3)修改窗口属性,改变字体
   在命令行标题栏上点击右键,选择"属性"->"字体",将字体修改为True Type字体"Lucida Console",然后点击确定将属性应用到当前窗口。

2、用openssl命令生成证书

 1)OpenSSL建立自己的CA
   修改openssl.cnf文件(见附件),保存为utf-8编码格式,将文件放置到OPENSSL_CONF环境变量对应路径。

  1. openssl req -utf8 -new -x509 -keyout ca.key -out ca.crt -days 7120


 2)生成证书私钥(key文件)    
   重新修改openssl.cnf,用于生成子证书

  1. openssl genrsa -des3 -out server.key 1024

    运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!
   去除key文件口令的命令:

  1. openssl rsa -in server.key -out server.key


 3)生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可.

  1. openssl req -utf8 -new -key server.key -out server.csr


 4)用生成的CA的证书为刚才生成的server.csr文件签名.

  1. openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key-days 3650


 5)将私钥秘cer证书合并成p12格式  

  1. 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