`
sharron5
  • 浏览: 18519 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA keytool数字证书生成及应用

阅读更多
Java中的keytool.exe可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息。证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥。

每一个证书库是一个文件组成,它有访问密码,在首次创建时,它会自动生成证书库,并要求指定访问证书库的密码。

在创建证书的的时候,需要填写证书的一些信息和证书对应的私钥密码。这些信息包括 CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx,它们的意思是:

CN(Common Name名字与姓氏)

OU(Organization Unit组织单位名称)

O(Organization组织名称)

L(Locality城市或区域名称)

ST(State州或省份名称)

C(Country国家名称)

可以采用交互式让工具提示输入以上信息,也可以采用参数

-dname "CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx"来自动创建。

一:创建keystore及一条证书信息:
进入windows命令行窗口,输入:
(一)交互式:
keytool -genkey -alias testCA -keyalg RSA -keysize 1024 -keystore chap8.keystore -validity 3650



(二)非交互式
keytool -genkey -dname “CN=test,OU=test,O=test,L=bj,ST=bj,C=CN” -alias testCA -keyalg RSA -keysize 1024 -keystore chap8.keystore
-keypass 111111 -storepass 111111 -validity 3650

值得注意的是:
在”(一)交互式“中最后要求输入‘testCA’主密码时,直接回车就可以了。
在”(二)非交互式“中, keypass 与 storepass 必须一致。
否则整合JBOSS会抛出异常。

二:整合JBOSS(jboss-5.1.0.GA)
(一)将产生的chap8.keystore放到JbossHOME\server\default\conf下
(二)打开JbossHOME\server\default\deploy\jbossweb.sar\server.xml,修改如下配置:

<!-- SSL/TLS Connector configuration using the admin devl guide keystore
		<Connector port="8443" address="${jboss.bind.address}"     
		maxThreads="100" strategy="ms" maxHttpHeaderSize="8192"     
		emptySessionPath="true"     
		scheme="https" secure="true" clientAuth="false"       
		keystoreFile="${jboss.server.home.dir}/conf/chap8.keystore"     
		keystorePass="rmi+ssl" sslProtocol = "TLS" />
	-->
      <Connector protocol="HTTP/1.1" SSLEnabled="true" 
           port="8443" address="${jboss.bind.address}"
           scheme="https" secure="true" clientAuth="false" 
           keystoreFile="${jboss.server.home.dir}/conf/chap8.keystore"
           keystorePass="111111" sslProtocol = "TLS" />


此时基本配置已经完成。

在myeclipse中新建一个WEB工程keytest,启动JBOSS,浏览器地址栏输入http://localhost:8080/keytest 或 https://localhost:8443/keytest都可访问。会提示安装证书。

三:将HTTP转为HTTPS
打开keytest工程目录下web.xml文件,添加如下配置:
<security-constraint>
		<web-resource-collection>
			<web-resource-name>HtmlAdaptor</web-resource-name>			
			<url-pattern>/</url-pattern>			
		</web-resource-collection>		
		<user-data-constraint>
			<description>Protection should be CONFIDENTIAL</description>
			<transport-guarantee>CONFIDENTIAL</transport-guarantee>
		</user-data-constraint>
	</security-constraint>


web-resource-name可随意命名
url-pattern为需要保护资源URL
transport-guarantee可选值:
       NONE:对所用的通讯协议不加限制
       INTEGRAL:意味着服务器和客户端之间的数据必须以某种方式发送,而且在传送中不能改变
      CONFIDENTIAL:这意味着传输的数据必须是加密的数据
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics