在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。

openwindowjspJava平安教程  创立SSL衔接和证书 Bootstrap

解释:安全起见我们没有引用任何真实的网站。
本文的例子都是示例性的并且仅仅出于学习目的。
本例中的证书由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运用。