轻松学会Linux系统下的中文数字证书制做
本文讨论在简体中文Linux系统中的Tomcat Web服务器上制作数字证书的方法。
数字证书采用PKI(Public Key Infrastructure)公开密钥基础架构技术,利用一对互相匹配的密钥进行加密和解密。但在内部系统应用中,不需要专门CA(认证授权中心)的认证证书,可自己建立认证服务器。可以用Windows 2003 Server证书颁发机构作为CA,用Java制作中文申请后向Windows 2003 Server证书颁发机构CA申请证书,这样就可以得到简体中文数字证书了。本文讨论在简体中文Linux系统中的Tomcat Web服务器上制作数字证书的方法。
证书的产生方法
在Linux下做CA,必须安装openssl,该软件的最新版本可以从www.openssl.org下载。不过,即使直到最新版本,openssl输入简体中文信息后产生的证书也会显示为乱码。还好,有两个办法可以解决这个问题: 一是修改openssl源程序; 另一个是用UTF-8编码进行处理。由于前一种方法比较复杂,本文主要讨论后一种方法。在输入中文字符时,openssl可以正确处理UTF-8的字符编码,不能处理简体中文的gb2312编码。于是可将简体中文的用户信息输入到配置文件中,再转换为UTF-8编码,生成证书申请时使用配置文件的缺省信息,即可产生正确显示中文的证书。其方法如下:
1.假设配置文件为openssl.cnf,编辑修改如下内容:
string_mask=utf8only
countryName_default=CN stateOrProvinceName_default=省份
localityName_default=城市 O.organizationName_default=部门
organizationalUnitName_default=单位 commonName_default=名字
2.用iconv命令将文件格式转换为UTF-8编码:
iconv -f gbk -t utf-8 openssl.cnf > openssl_utf8.cnf
3.用openssl生成证书签名请求时,加上”-utf8”和将配置文件指定为openssl_utf8.cnf:
openssl req -utf8 -config openssl_utf8.cnf -new -out req.csr
除了输入密码,其他的一律选择回车,使用显示为乱码的缺省值,就可产生包含正确中文信息的证书申请文件req.csr,这样的申请方式可用于CA和客户证书的申请。Tomcat服务器证书需要生成keystore文件,用Java工具keytool命令生成,安装简体中文版本的Java,可正确生成简体中文的证书申请。