自制中文数字证书

点赞:2170 浏览:5542 近期更新时间:2024-01-31 作者:网友分享原创网站原创

(林岗)当前,数字证书应用已深入到日常生活的诸多活动中.而通过了解在Linux下制作数字证书的过程可以详细了解数字证书的实质,亦可尝试在内部系统中免费使用中文数字证书.


数字证书采用PKI(PublicKeyInfrastructure)公开密钥基础架构技术,利用一对互相匹配的密钥进行加密和解密.但在内部系统应用中,不需要专门CA(认证授权中心)的认证证书,可自己建立认证怎么写作器.可以用Windows2003Server证书颁发机构作为CA,用Ja制作中文申请后向Windows2003Server证书颁发机构CA申请证书,这样就可以得到简体中文数字证书了.本文讨论在简体中文Linux系统中的TomcatWeb怎么写作器上制作数字证书的方法.

证书的产生方法

在Linux下做CA,必须安装openssl,该软件的最新版本可以从.省略下载.不过,即使直到最新版本,openssl输入简体中文信息后产生的证书也会显示为乱码.还好,有两个办法可以解决这个问题:一是修改openssl源程序,另一个是用UTF-8编码进行处理.由于前一种方法比较复杂,本文主要讨论后一种方法.在输入中文字符时,openssl可以正确处理UTF-8的字符编码,不能处理简体中文的gb2312编码.于是可将简体中文的用户信息输入到配置文件中,再转换为UTF-8编码,生成证书申请时使用配置文件的缺省信息,即可产生正确显示中文的证书.其方法如下:

1.检测设配置文件为openssl.省略anizationName_default等于部门

anizationalUnitName_default等于单位monName_default等于名字

2.省略f>openssl_utf8.f

3.省略f:

opensslreq-utf8-configopenssl_utf8.f-new-outreq.csr

除了输入,其他的一律选择回车,使用显示为乱码的缺省值,就可产生包含正确中文信息的证书申请文件req.csr,这样的申请方式可用于CA和客户证书的申请.Tomcat怎么写作器证书需要生成keystore文件,用Ja工具keytool命令生成,安装简体中文版本的Ja,可正确生成简体中文的证书申请.

自制中文数字证书参考属性评定
有关论文范文主题研究: 关于证书的论文范文素材 大学生适用: 学校学生论文、电大毕业论文
相关参考文献下载数量: 72 写作解决问题: 学术论文怎么写
毕业论文开题报告: 论文任务书、论文目录 职称论文适用: 刊物发表、高级职称
所属大学生专业类别: 学术论文怎么写 论文题目推荐度: 最新题目

证书生成步骤和使用

1.生成自签名认证的CA证书ca-cert.省略f-new-outca/ca-req.csr-keyca/ca-key.pem

2.生成怎么写作器证书.TomcatWeb怎么写作器使用keystore文件,内含CA根证书和怎么写作器证书,需要使用Ja的keytool工具生成keystore文件.不过如果使用dname选项直接在命令行中写入,可减少中文输入法的麻烦.

keytool-genkey-aliastomcat-dname"CN等于域名,OU等于部门,O等于组织,L等于城市,S等于省份,C等于CN"-validity365-keyalgRSA-keysize1024-keystoreserver/server-keystore

最后将CA证书和生成的怎么写作器证书用keytool命令导入server-keystore文件.

3.生成客户证书client-cert.省略f-new-outclient/client-req.csr-keyclient/client-key.pem

Tomcat使用keystore文件存放证书,并在server.xml设置安全连接以使用证书,server.xml配置例子如下,检测设使用8443端口支持https:

将ca-cert.p12和client-cert.p12导入客户浏览器或USBKey中,即可使用证书,用“https://域名:8443URL”即可访问怎么写作器.

JSP中文编码转换

从以上过程得到的怎么写作器证书是简体中文编码的,而CA和客户证书使用的是UTF-8编码.在显示和使用中都没有问题.若应用中怎么写作器需要处理客户证书的信息,JSP可使用X509Certificate对象获得证书信息.如果要显示该客户证书信息,则需要使用UTF-8编码转换,而且页面设置为UTF-8编码:

Stringsubdn_utf8等于newString(subdn.getBytes("ISO8859_1"),"UTF-8"),

在国内环境中,一般需要简体中文gb2312(gbk)编码,不但需要显示中文,而且还需要处理简体中文编码信息.这就要求在jsp中将获取的UTF-8编码转换为gb2312编码.但问题是JaJDK本身没有提供编码转换的类,所有和编码有关的类都在sun.io.*和Ja.nio.charset.*中,而自己编程转换代码又比较麻烦.

但是,JDK隐藏了一个私有类ja.lang.StringCoding可实现编码转换.需要做的是复制ja.lang.StringCoding源程序,在自己的项目中建立一个StringCoding类,将需要部分改为public,即可利用StringCoding的函数实现代码转换.步骤如下:

首先,在自己项目文件创建一个类StringCoding.ja,拷贝源程序,并将类定义、构造函数、编码转换要用到的编码、解码函数改为“public”属性.

publicstaticchar[]decode(StringcharsetName,byte[]ba,intoff,intlen)

publicstaticbyte[]encode(StringcharsetName,char[]ca,intoff,intlen)

然后,在jsp应用程序中importStringCoding类,先获取UTF-8编码字节流,通过一系列编解码操作得到简体中文gb2312编码字符串.要点是在UTF-8字符数组下解码为简体中文字节数组才能正确转换代码.

Stringsubdn等于cert.getSubjectDN().toString(),

byte[]byteutf8等于subdn.getBytes("iso8859_1"),

char[]charutf8等于StringCoding.decode("utf-8",byteutf8,0,byteutf8.length),

byte[]bytegb等于StringCoding.encode("gb2312",charutf8,0,charutf8.length),

Stringsubdn_gb等于newString(bytegb,"gb2312"),