资源描述:
《java安全教程——创建ssl连接和证书-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Java安全教程——创建SSL连接和证书本文illImportNew-hejiani翻译自javacodegeekso欢迎加入翻译小组。转载请见文末要求。我们在关于JavaEE安全的系列文章屮,冇一篇也详细介绍了如何在JavaEE应用中创建SSL连接和证书。正如前面文章提到的,SSL(SecureSocketsLayer,安全套接层)/TLS(TransportLayerSecurity,传输层安全)保证了客户端和web服务器的连接安全。客户端通过HTTPS连接使用web资源。为创建与客户端的安全连接,以加密格式发送/接受信息,J3V3提供了完善的安全体系API类库。•JCA
2、(JavaCryptographyArchitecture,Java加密体系结构)•JCE(JavaCryptographicExtension,Java加密扩展包)•JSSE(JavaSecuredSocketExtension,Java安全套接字扩展包)SSL连接要求web服务器持冇数字证书,该证书使客户端信任该web应用的可靠性。需要发送加密信息的应用从CA(CertificateAuthority,数字证书认证机构)申请数字证书。CA验证应用所冇者的详细信息和英他身份信息,并签发数字证书。在PKI(PublicKeyInfrastructure,公钥基础设施)体系中,
3、数字证书由CA签发,它包括识别名(DN,DistinguishedName)/所有者名称/使用者(Subject),唯一识别证书的序列号,所有者公钥,签发日期,到期时间,CA识别名,签发机构(CA)的数字签名,签名的创建算法。CA签发的数字证书发布在CA的注册库屮,这样认证用户就可以使用所有者的公钥。浏览器如何确认拥有证书的应用或网站的可靠性?所有的商业CA都与主流的浏览器有所关联,它们的根证书被嵌入在浏览器小。浏览器SSL兼容性可以通过证帖存储区检查,证帖存储区提供了CA证帖的相关信息,CA证书保存在浏览器的存储中。同时,CA网站也提供了浏览器SSL兼容性信息。下面的图片展
4、示了示例网站http://abcgen.uk的证书的详细信息。该证书保证所有者的可靠性已经被验证,数字证书签发给ABCGenIdiotcchicpic,它的CommonName为www.abcgen.uk。说明:安全起见我们没有引用任何真实的网站。本文的例子都是示例性的并且仅仅出于学习目的。本例中的证书由VerisignasClass3签发,表明Verisign执行了对所有者的验证和确认。这并不是一个规定的PKT标准。下一项为证书的冇效性。Fingerprints为编码后的公钥。数据使用密码哈希函数SHA1和MD5来哈希。证书详细信息卜•图为证书层次结构。第一项为根证书,第二
5、项为扩展验证。认证机构(CA)通过扩展验证捉供了更高级的安金认证。所冇主流浏览器的密钥存储区都包含根和扩展验证信息,这样它们就可以认证特定应用的可靠性。证书层次结构希望你已经了解了大概思路,现在来编码实现吧。使用的产品•IDE:Netbeans7.2•JavaDevelopmentKit(JDK):Version6•Glassfishserver:3.1•认证机制:FonnBased认证•认证服务器:LDAPOpenDSv2.2目标web服务器与客户端Z间创建SSL连接。第1步:在Glassfish服务器创建服务器证书打开windows中的命令行提示-〉进入{domaindi
6、r}/config目录,{domain_dir}为Glassfishdomain路径,比如C:NetBeans7.2configGF3domainlconfig笫2步:使用keytool命令生成证书。Keytool是JavaSE6提供的密钥和证书管理工具。运行以下命令:>keytool-genkey-aliasserver-alias一key^lgRSA一keyp^sschangeit-storepasschangeit-keystorekeystore.jksThecommandwillaskforthefollowingdetails:Whatisyourfi
7、rstandlastname?[Unknown]:localhost〈〈Fortestingpurposesweneedtouselocalhostsinceitmapstotheapplicationserverhostname.Ideallyinproductionenvironmentsthisfieldshouldincludeapplicationserver"sname.>>Whatisthe[Unknown]:nameofyourorganizationalunit?idiotechieW