分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
基于自签名的X.509数字证书生成及验证
数字证书用于标志网络用户身份,在Web应用中,数字证书的应用十分广泛,如:安全电子邮件、访问安全站点、安全电子事务处理和安全电子交易等。
数字证书的格式一般采用X.509国际标准。目前,数字证书认证中心主要签发安全电子邮件证书、个人和企业身份证书、服务器证书以及代码签名证书等几种类型证书。
数字证书由证书机构签发,证书机构通常需经权威认证机构注册认证。在企业应用中,也常用企业自身作为发证机构(未经过认证)签发数字证书,证书的使用范围也常是企业内部,这样的证书就是所谓的“自签名”的。
数字证书采用公钥密码体制,每个用户拥有一把仅为本人所掌握的私有密钥(私钥),用它进行解密和签名;同时拥有一把公共密钥(公钥)并可以对外公开,用于加密和验证签名。
下面介绍我们在项目中常用的自签名证书的生成及验证方法。为简单起见,我们假设所有网站用户使用同一个数字证书clientCA。
一、服务器端
登录远程服务器,在服务器端生成证书并提供下载。服务器上应当安装jdk1.5以上,因为我们需要使用jdk自带的keytool工具,keytool工具位于jdk安装目录的bin目录下。
1、 生成密钥数据库及根证书
如果是第1次使用数字证书,那么很可能服务器上还没有密钥数据库。我们可以使用下列命令成密钥数据库(keystore)。
keytool -genkey -dname "CN=发证人姓名,OU=发证人所属部门,O=发证人所属公司,L=昆明市,ST=云南省,C=中国" -alias IPCCCA -keyalg RSA -keysize 1024 -keystore IPCCCA-keypass 根证书密码-storepass 库密码
运行脚本后,会在当前用户主目录(如:C:/Documents and Settings/Administrator目录,window系统)下生成密钥数据库文件IPCCCA。注意,需要设置两个密码,一个是根证书密码keypass,一个是库密码storepass,如果你不是很确定二者间的区别,最好两个都设置成一样。
2、 生成自签名证书
运行下列命令,生成一个自签名证书:
keytool -genkey -dname "CN=发证人姓名,OU=发证人所属部门,O=发证人所属公司,L=昆明市,ST=云南省,C=中国" -alias clientCA -keyalg RSA -keysize 1024 -keystore IPCCCA-keypass 123456 -storepass 库密码 -validity 1
这个证书是一个自签名证书,该证书的别名为clientCA,存储在前面生成的那个密钥库文件(IPCCCA)中。这需要提供访问该库的库密码(storepass),必须跟第1步中的一样。Kepass是该证书的公钥,验证证书时需要提供该密钥。
并且为了便于测试,我们把证书有效期设置为1天。这样每过一天,用户必须重新下载证书。
3、 查看密钥库
你可以用下列命令查看生成的两个密钥:
keytool -list -keystore IPCCCA –storepass 库密码
结果会列出两个密钥,类似如下:
您的 keystore 包含 2 输入
clientca, 2011-3-30, keyEntry,
认证指纹 (MD5):10:B8:51:54:7B:1C:60:7C:89:E7:B6:8E:71:E5:E1:E7
ipccca, 2011-3-30, keyEntry,
认证指纹 (MD5): C3:E3:7D:7C:9B:AA:05:84:92:AF:93:18:42:D2:1C:07
4、 提供证书下载
我们可以在服务器上放一个servlet,以提供自签名证书的下载:
privatestatic final long serialVersionUID = 1L;
// 有效期天数
privatestatic final int Max_Days = 1;
//keystore密码
privatestatic final char[] password = "ipcc@95598".toCharArray();
//keystore文件路径
privatestatic final String keystoreFilename = "C://Documents andSettings//Administrator//IPCCCA";
// 证书文件名
privatestatic final String certFilename="client.cer";
// 证书别名
privatestatic final String alias = "clientCA";
privateKeyStore keystore;
private String sigAlgrithm;
//读取keystore
privateKeyStore loadKeystore(String keystorepath) {

本文介绍了如何在服务器端生成自签名的X.509数字证书,并提供了证书的验证方法。详细步骤包括使用keytool生成密钥库、自签名证书、更新证书有效期,以及在客户端进行证书有效性与有效期的验证。
最低0.47元/天 解锁文章
8046

被折叠的 条评论
为什么被折叠?



