自制中文数字证书

时间:2024-04-06 点赞:46281 浏览:89250 作者原创标记本站原创

本文是一篇证书论文范文,证书方面学士学位论文,关于自制中文数字证书相关在职研究生毕业论文范文。适合证书及服务器及中文方面的的大学硕士和本科毕业论文以及证书相关开题报告范文和职称论文写作参考文献资料下载。

(林岗)当前,数字证书应用已深入到日常生活的诸多活动中.而通过了解在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,可正确生成简体中文的证书申请.

证书生成步骤和使用

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"),

相关论文

基于PKI的数字证书的应用

为您写可靠性毕业论文和职称论文提供可靠性类本科论文范文,与基于PKI的数字证书的应用相关论文范文集,包括关于可靠性及物联网及数字证书方。

数字证书在网络安全中的应用

此文是一篇网络安全论文范文,关于网络安全方面论文范文,与数字证书在网络安全中的应用相关在职研究生毕业论文。适合不知如何写网络安全及计。

基于数字证书的数字签名其应用的

该文是电子商务专业信息安全论文范文,主要论述了信息安全类专科毕业论文开题报告,与基于数字证书的数字签名其应用的相关论文范文素材,适。

数字证书在网络安全中的应用

本文是一篇网络安全论文范文,网络安全方面有关大学毕业论文,关于数字证书在网络安全中的应用相关硕士毕业论文范文。适合网络安全及计算机网。

基于数字证书的电子报检技术

本文是一篇特种设备检验论文范文,特种设备检验方面毕业论文开题报告范文,关于基于数字证书的电子报检技术相关电大毕业论文范文。适合特种设。

基于数字证书认证机制的应用

本文是一篇电子政务论文范文,关于电子政务方面自考毕业论文开题报告,关于基于数字证书认证机制的应用相关学士学位论文范文。适合电子政务及。