在PKI(Public Key Infrastructure,公钥根本举动步伐)体系中,数字证书由CA签发,它包括识别名(DN,Distinguished Name)/所有者名称/利用者(Subject),唯一识别证书的序列号,所有者公钥,签发日期,到期韶光,CA识别名,签发机构(CA)的数字署名,署名的创建算法。CA签发的数字证书发布在CA的注册库中,这样认证用户就可以利用所有者的公钥。
浏览器如何确认拥有证书的运用或网站的可靠性?所有的商业CA都与主流的浏览器有所关联,它们的根证书被嵌入在浏览器中。浏览器SSL兼容性可以通过证书存储区检讨,证书存储区供应了CA证书的干系信息,CA证书保存在浏览器的存储中。同时,CA网站也供应了浏览器SSL兼容性信息。
下面的图片展示了示例网站http://abcgen.uk的证书的详细信息。该证书担保所有者的可靠性已经被验证,数字证书签发给ABCGen Idiotechie plc,它的Common Name为www.abcgen.uk。
解释:安全起见我们没有引用任何真实的网站。本文的例子都是示例性的并且仅仅出于学习目的。本例中的证书由Verisign as Class 3签发,表明Verisign实行了对所有者的验证和确认。这并不是一个规定的PKI标准。下一项为证书的有效性。Fingerprints为编码后的公钥。数据利用密码哈希函数SHA1和MD5来哈希。
证书详细信息
下图为证书层次构造。第一项为根证书,第二项为扩展验证。认证机构(CA)通过扩展验证供应了更高等的安全认证。所有主流浏览器的密钥存储区都包含根和扩展验证信息,这样它们就可以认证特定运用的可靠性。
证书层次构造
希望你已经理解了大概思路,现在来编码实现吧。
利用的产品IDE: Netbeans 7.2Java Development Kit (JDK): Version 6Glassfish server: 3.1认证机制:Form Based认证认证做事器:LDAP OpenDS v2.2目标
web做事器与客户端之间创建SSL连接。
第1步:
在Glassfish做事器创建做事器证书
打开windows中的命令行提示 -> 进入{domain_dir}/config目录,{domain_dir}为Glassfish domain路径,比如C:\NetBeans\7.2\config\GF3\domain1\config
第2步:
利用keytool命令天生证书。Keytool是Java SE 6供应的密钥和证书管理工具。运行以下命令:
第3步:
天生的证书导出到server.cer文件
第4步:
证书添加到trust store文件
第5步:
验证证书成功添加到keystore。
第6步:
确认证书是否成功添加到trust store。
现在证书在keystore和truststore都是可用的。keystore包含做事器的私钥而truststore仅包含CA证书或者公钥。这便是证书和密钥的清晰分界,密钥保存在keystore的更安全的环境中,而公钥放在truststore更随意马虎访问。但在本例中由于我们没有CA证书,做事器证书存储在trusted store中。
第7步:
从做事器配置视图进入做事器admin掌握台。
然后点击Configurations -> server-config->HTTP Service ->http-listeners-2。Http-Listeners-2为安全的HTTPS port 8181。
点击SSL tab页,修正Certificate Nick-name为”server-alias”,上面我们已经创建该证书。
运用做事器SSL设置
第8步:
重启做事器。
所有做事器干系配置现在就完成了。
接下来便是代码了。我们将利用http://idiotechie.com/secure-web-application-in-java-ee6-using-ldap/已经用到的相同的代码。
唯一须要变动的便是web.xml中transport-guarantee从none改为confidential。
CONFIDENTIAL保护模式用于运用须要防止其他实体访问到传输内容的情形。
编译,支配,运行该运用。
现在纵然你输入URL http://localhost:9999/SampleWebApp/index.jsp做事器也会通过https://localhost:8181/SampleWebApp/index.jsp将用户重定向到安全的HTTPS连接。由于做事器天生的证书是自署名的而不是来自CA的证书,浏览器会有网站安全证书不可信的警示信息。这是由于事实上浏览器的truststore不包含有这些证书。
安全的运用
为避免更多的警示信息将证书添加到浏览器的exception list。从Mozilla Firefox浏览器可以看到该示例运用的证书详细信息:
localhost证书详细信息
希望读者明白了如何创建数字证书和安全的web运用。