日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java安全教程–创建SSL连接和证书的分步指南

發(fā)布時(shí)間:2023/12/3 java 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java安全教程–创建SSL连接和证书的分步指南 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在有關(guān)應(yīng)用JEE安全性的系列文章中,我們?yōu)槟峁┝肆硪粋€(gè)有關(guān)如何在Java EE應(yīng)用程序中創(chuàng)建SSL連接和創(chuàng)建證書的詳細(xì)教程。 如我們之前的文章中所述, 安全套接字層(SSL)/傳輸層安全性(TLS)將啟用客戶端和Web服務(wù)器之間的安全連接。 客戶端將使用HTTPS連接來使用Web資源。 Java提供了各種基于安全性的API,可以幫助與客戶端建立安全連接并以加密格式發(fā)送/接收消息:

  • Java密碼體系結(jié)構(gòu)(JCA)
  • Java密碼擴(kuò)展(JCE)
  • Java安全套接字?jǐn)U展(JSSE)

為了啟用SSL連接,Web服務(wù)器需要具有數(shù)字證書 ,該數(shù)字證書將允許客戶端信任Web應(yīng)用程序的真實(shí)性。 想要發(fā)送加密消息的應(yīng)用程序向證書頒發(fā)機(jī)構(gòu)(CA)申請數(shù)字證書。 CA驗(yàn)證應(yīng)用程序所有者詳細(xì)信息和其他標(biāo)識詳細(xì)信息,并頒發(fā)數(shù)字證書。
在公鑰基礎(chǔ)結(jié)構(gòu)(PKI)方案中,數(shù)字證書由CA頒發(fā),其中包含專有名稱(DN)/所有者的名稱/主題,用于唯一標(biāo)識證書的序列號,所有者的公鑰,發(fā)行日期,有效期,專有CA的名稱,頒發(fā)機(jī)構(gòu)(CA)的數(shù)字簽名,用于創(chuàng)建簽名的簽名算法 。 CA頒發(fā)的數(shù)字證書可以保存在注冊表中,以便進(jìn)行身份驗(yàn)證的用戶可以使用所有者的公共密鑰。

瀏覽器如何使用證書識別應(yīng)用程序或網(wǎng)站的真實(shí)性?

所有商業(yè)CA與主要的Web瀏覽器都有關(guān)系,因此其根證書將嵌入在其瀏覽器中。 可以通過證書存儲檢查瀏覽器的SSL兼容性,該證書存儲提供有關(guān)存儲在瀏覽器存儲中的CA證書的信息。 另外,CA網(wǎng)站還提供有關(guān)瀏覽器的SSL兼容性的信息。

下圖顯示了示例網(wǎng)站http://abcgen.uk的證書詳細(xì)信息。 下面的證書向客戶保證所有者的真實(shí)性已得到驗(yàn)證,并且數(shù)字證書已頒發(fā)給ABCGen Idiotechie plc,其通用名稱為www.abcgen.uk。

注意:出于安全原因,我們未對實(shí)時(shí)網(wǎng)站進(jìn)行任何引用。 本文中使用的示例僅用于說明和學(xué)習(xí)目的。 此示例顯示證書由Verisign頒發(fā)為Class 3,這表示Verisign已對所有者進(jìn)行了獨(dú)立的驗(yàn)證和確認(rèn)。 這不是指定的PKI標(biāo)準(zhǔn)。 下一個(gè)字段表示此證書的有效性。 指紋表示公鑰,但采用編碼格式。 使用密碼散列函數(shù)SHA1和MD5對數(shù)據(jù)進(jìn)行散列。

樣本證書詳細(xì)信息

下圖顯示了證書層次結(jié)構(gòu)。 第一項(xiàng)表示根證書,第二項(xiàng)表示擴(kuò)展的驗(yàn)證。 證書頒發(fā)機(jī)構(gòu)(CA)提供稱為擴(kuò)展驗(yàn)證的更高安全性證書。 所有主要的Web瀏覽器的密鑰庫都將包含有關(guān)根和擴(kuò)展驗(yàn)證的信息,這將使它們能夠驗(yàn)證特定應(yīng)用程序的真實(shí)性。

證書層次結(jié)構(gòu)

希望大家都明白了。 現(xiàn)在讓我們嘗試一些編碼。

使用的產(chǎn)品:

  • IDE: Netbeans 7.2
  • Java開發(fā)套件(JDK):版本6
  • Glassfish服務(wù)器: 3.1
  • 身份驗(yàn)證機(jī)制:基于表單的身份驗(yàn)證
  • 驗(yàn)證服務(wù)器: LDAP OpenDS v2.2

目的:

在Web服務(wù)器和客戶端之間創(chuàng)建SSL連接。

步驟1:

在Glassfish服務(wù)器中創(chuàng)建服務(wù)器證書
在Windows中打開命令提示符->轉(zhuǎn)到{domain_dir} / config目錄,其中{domain_dir}表示Glassfish域路徑。
例如C:\ NetBeans \ 7.2 \ config \ GF3 \ domain1 \ config>

第2步:

我們將使用keytool命令生成證書。 Keytool是Java SE 6提供的密鑰和證書管理實(shí)用程序。
運(yùn)行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 CN=localhost, OU=idiotechie, O=idiotechie, L=edinburgh, ST=EDN, C=GB correct? [no]:? YES

第三步:

將生成的證書導(dǎo)出到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: CN=localhost, OU=idiotechie, O=idiotechie, L=edinburgh, ST=EDN, C=GB Issuer: CN=localhost, OU=idiotechie, O=idiotechie, L=edinburgh, ST=EDN, C=GB 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:

驗(yàn)證證書是否已成功添加到密鑰庫中。

>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: CN=localhost, OU=idiotechie, O=idiotechie, L=edinburgh, ST=EDN, C=GB Issuer: CN=localhost, OU=idiotechie, O=idiotechie, L=edinburgh, ST=EDN, C=GB 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:

驗(yàn)證證書是否已成功添加到信任存儲中。

>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

因此,現(xiàn)在證書在密鑰庫和信任庫中都可用。 密鑰庫包含服務(wù)器的私鑰,而信任庫僅包含CA證書或公用密鑰。 這是對證書和密鑰的更清晰的劃分,其中可以將私鑰保存在密鑰庫中更安全的環(huán)境中,而將公鑰保留在信任庫中的更易訪問的選項(xiàng)中。
但是,在此示例中,由于我們沒有CA證書,因此服務(wù)器證書存儲在受信任的存儲區(qū)中。

步驟7:

從服務(wù)器配置的角度來看,讓我們轉(zhuǎn)到服務(wù)器管理控制臺。
然后單擊配置->服務(wù)器配置-> HTTP服務(wù)-> http-listeners-2。
Http-Listeners-2表示安全的HTTPS端口8181。 單擊SSL選項(xiàng)卡,然后根據(jù)我們上面創(chuàng)建的證書將“證書昵稱”修改為“服務(wù)器別名”。

應(yīng)用程序服務(wù)器SSL設(shè)置

步驟8:

重新啟動服務(wù)器。

至此,所有與服務(wù)器相關(guān)的配置都已完成。

讓我們進(jìn)入應(yīng)用程序代碼。
我們將使用與http://idiotechie.com/secure-web-application-in-java-ee6-using-ldap/相同的應(yīng)用程序代碼。

唯一需要的更改是在web.xml中 ,其中的傳輸保證將從無更改為機(jī)密。

<user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint>

當(dāng)應(yīng)用程序希望阻止其他實(shí)體查看傳輸內(nèi)容時(shí),將使用機(jī)密保護(hù)模式。

生成,部署和運(yùn)行應(yīng)用程序。

現(xiàn)在,即使您嘗試鍵入U(xiǎn)RL http:// localhost:9999 / SampleWebApp / index.jsp ,服務(wù)器也會通過https:// localhost:8181 / SampleWebApp / index.jsp將用戶重定向到安全的HTTPS連接。 由于服務(wù)器生成的證書是自簽名證書,而不是來自CA的證書,因此瀏覽器會發(fā)出警告消息,通知您無法信任網(wǎng)站的安全證書。 這是因?yàn)闉g覽器的信任庫不包含這些證書。

安全的應(yīng)用程序

我們可以將證書添加到瀏覽器的例外列表中,以避免將來出現(xiàn)警告。 現(xiàn)在,讓我們嘗試從Mozilla Firefox瀏覽器檢查示例應(yīng)用程序的證書詳細(xì)信息:

Localhost證書詳細(xì)信息

希望我的讀者能夠理解如何創(chuàng)建數(shù)字證書和保護(hù)Web應(yīng)用程序。 如果您喜歡本文,請?jiān)谏缃痪W(wǎng)站上分享,并幫助我們成長。

在下面下載示例代碼:


參考: Java安全教程–分步指南,可從Idiotechie博客上的JCG合作伙伴 Mainak Goswami 創(chuàng)建SSL連接和證書 。

翻譯自: https://www.javacodegeeks.com/2013/06/java-security-tutorial-step-by-step-guide-to-create-ssl-connection-and-certificates.html

總結(jié)

以上是生活随笔為你收集整理的Java安全教程–创建SSL连接和证书的分步指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。