滁州新手跨境电商建站哪家好,黄页网站是什么,万能浏览器手机版下载,百度网盘在线登录入口在有关应用JEE安全性的系列文章中#xff0c;我们为您提供了另一个有关如何在Java EE应用程序中创建SSL连接和创建证书的详细教程。 如我们之前的文章中所述#xff0c; 安全套接字层#xff08;SSL#xff09;/传输层安全性#xff08;TLS#xff09;将启用客户端和Web服… 在有关应用JEE安全性的系列文章中我们为您提供了另一个有关如何在Java EE应用程序中创建SSL连接和创建证书的详细教程。 如我们之前的文章中所述 安全套接字层SSL/传输层安全性TLS将启用客户端和Web服务器之间的安全连接。 客户端将使用HTTPS连接来使用Web资源。 Java提供了各种基于安全性的API可以帮助与客户端建立安全连接并以加密格式发送/接收消息 Java密码体系结构JCA Java密码扩展JCE Java安全套接字扩展JSSE 为了启用SSL连接Web服务器需要具有数字证书 该数字证书将允许客户端信任Web应用程序的真实性。 想要发送加密消息的应用程序向证书颁发机构CA申请数字证书。 CA验证应用程序所有者详细信息和其他标识详细信息并颁发数字证书。 在公钥基础结构PKI方案中数字证书由CA颁发其中包含专有名称DN/所有者的名称/主题用于唯一标识证书的序列号所有者的公钥发行日期有效期专有CA的名称颁发机构CA的数字签名用于创建签名的签名算法 。 CA颁发的数字证书可以保存在注册表中以便进行身份验证的用户可以使用所有者的公共密钥。 浏览器如何使用证书识别应用程序或网站的真实性 所有商业CA与主要的Web浏览器都有关系因此其根证书将嵌入在其浏览器中。 可以通过证书存储检查浏览器的SSL兼容性该证书存储提供有关存储在浏览器存储中的CA证书的信息。 另外CA网站还提供有关浏览器的SSL兼容性的信息。 下图显示了示例网站http://abcgen.uk的证书详细信息。 下面的证书向客户保证所有者的真实性已得到验证并且数字证书已颁发给ABCGen Idiotechie plc其通用名称为www.abcgen.uk。 注意出于安全原因我们未对实时网站进行任何引用。 本文中使用的示例仅用于说明和学习目的。 此示例显示证书由Verisign颁发为Class 3这表示Verisign已对所有者进行了独立的验证和确认。 这不是指定的PKI标准。 下一个字段表示此证书的有效性。 指纹表示公钥但采用编码格式。 使用密码散列函数SHA1和MD5对数据进行散列。 样本证书详细信息 下图显示了证书层次结构。 第一项表示根证书第二项表示扩展的验证。 证书颁发机构CA提供称为扩展验证的更高安全性证书。 所有主要的Web浏览器的密钥库都将包含有关根和扩展验证的信息这将使它们能够验证特定应用程序的真实性。 证书层次结构 希望大家都明白了。 现在让我们尝试一些编码。 使用的产品 IDE Netbeans 7.2 Java开发套件JDK版本6 Glassfish服务器 3.1 身份验证机制基于表单的身份验证 验证服务器 LDAP OpenDS v2.2 目的 在Web服务器和客户端之间创建SSL连接。 步骤1 在Glassfish服务器中创建服务器证书 在Windows中打开命令提示符-转到{domain_dir} / config目录其中{domain_dir}表示Glassfish域路径。 例如C\ NetBeans \ 7.2 \ config \ GF3 \ domain1 \ config 第2步 我们将使用keytool命令生成证书。 Keytool是Java SE 6提供的密钥和证书管理实用程序。 运行keytool命令如下所示 keytool -genkey -alias server-alias -keyalg RSA -keypass changeit -storepass changeit -ke
ystore keystore.jks
The command will ask for the following details:
What is your first and last name?
[Unknown]: localhost For testing purposes we need to use localhost since it maps to the application server hostname. Ideally in production environments this field should include application server’s name.
What is the name of your organizational unit?
[Unknown]: idiotechie
What is the name of your organization?
[Unknown]: idiotechie
What is the name of your City or Locality?
[Unknown]: edinburgh
What is the name of your State or Province?
[Unknown]: EDN
What is the two-letter country code for this unit?
[Unknown]: GB
Is CNlocalhost, OUidiotechie, Oidiotechie, Ledinburgh, STEDN, CGB correct?
[no]: YES 第三步 将生成的证书导出到server.cer文件。 keytool -export -alias server-alias -storepass changeit -file server.cer -keystore keysto
re.jks
Certificate stored in file server.cer 第四步 将证书添加到信任存储文件 keytool -import -v -trustcacerts -alias server-alias -file server.cer -keystore cacerts.j
ks -keypass changeit -storepass changeit
Owner: CNlocalhost, OUidiotechie, Oidiotechie, Ledinburgh, STEDN, CGB
Issuer: CNlocalhost, OUidiotechie, Oidiotechie, Ledinburgh, STEDN, CGB
Serial number: 519e7165
Valid from: Thu May 23 20:43:33 BST 2013 until: Wed Aug 21 20:43:33 BST 2013
Certificate fingerprints:
MD5: 34:B7:71:CD:C9:56:9A:EA:0C:F2:91:50:EA:7F:4B:64
SHA1: AA:DE:EC:1B:27:8E:BC:3A:7A:82:8C:B7:FA:C3:AA:11:2F:97:1F:2C
Signature algorithm name: SHA1withRSA
Version: 3
Trust this certificate? [no]: YES
Certificate was added to keystore
[Storing cacerts.jks] 步骤5 验证证书是否已成功添加到密钥库中。 keytool -list -v -keystore keystore.jks
Enter keystore password:
Alias name: server-alias
Creation date: 23-May-2013
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CNlocalhost, OUidiotechie, Oidiotechie, Ledinburgh, STEDN, CGB
Issuer: CNlocalhost, OUidiotechie, Oidiotechie, Ledinburgh, STEDN, CGB
Serial number: 519e7165
Valid from: Thu May 23 20:43:33 BST 2013 until: Wed Aug 21 20:43:33 BST 2013
Certificate fingerprints:
MD5: 34:B7:71:CD:C9:56:9A:EA:0C:F2:91:50:EA:7F:4B:64
SHA1: AA:DE:EC:1B:27:8E:BC:3A:7A:82:8C:B7:FA:C3:AA:11:2F:97:1F:2C
Signature algorithm name: SHA1withRSA
Version: 3 步骤6 验证证书是否已成功添加到信任存储中。 keytool -list -keystore cacerts.jks
Enter keystore password:server-alias, 23-May-2013, trustedCertEntry,
Certificate fingerprint (MD5): 34:B7:71:CD:C9:56:9A:EA:0C:F2:91:50:EA:7F:4B:64 因此现在证书在密钥库和信任库中都可用。 密钥库包含服务器的私钥而信任库仅包含CA证书或公用密钥。 这是对证书和密钥的更清晰的划分其中可以将私钥保存在密钥库中更安全的环境中而将公钥保留在信任库中的更易访问的选项中。 但是在此示例中由于我们没有CA证书因此服务器证书存储在受信任的存储区中。 步骤7 从服务器配置的角度来看让我们转到服务器管理控制台。 然后单击配置-服务器配置- HTTP服务- http-listeners-2。 Http-Listeners-2表示安全的HTTPS端口8181。 单击SSL选项卡然后根据我们上面创建的证书将“证书昵称”修改为“服务器别名”。 应用程序服务器SSL设置 步骤8 重新启动服务器。 至此所有与服务器相关的配置都已完成。 让我们进入应用程序代码。 我们将使用与http://idiotechie.com/secure-web-application-in-java-ee6-using-ldap/相同的应用程序代码。 唯一需要的更改是在web.xml中 其中的传输保证将从无更改为机密。 user-data-constraint
transport-guaranteeCONFIDENTIAL/transport-guarantee
/user-data-constraint 当应用程序希望阻止其他实体查看传输内容时将使用机密保护模式。 生成部署和运行应用程序。 现在即使您尝试键入URL http// localhost9999 / SampleWebApp / index.jsp 服务器也会通过https// localhost8181 / SampleWebApp / index.jsp将用户重定向到安全的HTTPS连接。 由于服务器生成的证书是自签名证书而不是来自CA的证书因此浏览器会发出警告消息通知您无法信任网站的安全证书。 这是因为浏览器的信任库不包含这些证书。 安全的应用程序 我们可以将证书添加到浏览器的例外列表中以避免将来出现警告。 现在让我们尝试从Mozilla Firefox浏览器检查示例应用程序的证书详细信息 Localhost证书详细信息 希望我的读者能够理解如何创建数字证书和保护Web应用程序。 如果您喜欢本文请在社交网站上分享并帮助我们成长。 在下面下载示例代码 参考 Java安全教程–分步指南可从Idiotechie博客上的JCG合作伙伴 Mainak Goswami 创建SSL连接和证书 。 翻译自: https://www.javacodegeeks.com/2013/06/java-security-tutorial-step-by-step-guide-to-create-ssl-connection-and-certificates.html