国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

tomcat實(shí)現(xiàn)SSL雙向認(rèn)證

一、基礎(chǔ)知識(shí)Tomcat 簡(jiǎn)介T(mén)omcat 是Apache Jakarta 的子項(xiàng)目之一,作為一個(gè)優(yōu)秀的開(kāi)源web 應(yīng)用服務(wù)器,全面支持jsp1.2以及servlet2.3規(guī)范。因其技術(shù)先進(jìn)、性能穩(wěn)定

一、基礎(chǔ)知識(shí)

Tomcat 簡(jiǎn)介

Tomcat 是Apache Jakarta 的子項(xiàng)目之一,作為一個(gè)優(yōu)秀的開(kāi)源web 應(yīng)用服務(wù)器,全面支持jsp1.2以及servlet2.3規(guī)范。因其技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java 愛(ài)好者的喜愛(ài)并得到了部分軟件開(kāi)發(fā)商的認(rèn)可,成為目前比較流行的web 應(yīng)用服務(wù)器。

用于對(duì)數(shù)據(jù)進(jìn)行壓縮和解壓操作,并返回網(wǎng)絡(luò)上傳送回的結(jié)果。HTTPS 實(shí)際上應(yīng)用了Netscape 的完全套接字層(SSL )作為HTTP 應(yīng)用層的子層。(HTTPS 使用端口443,而不是象HTTP 那樣使用端口80來(lái)和TCP/IP進(jìn)行通信。)SSL 使用40 位關(guān)鍵字作為RC4流加密算法,這對(duì)于商業(yè)信息的加密是合適的。HTTPS 和SSL 支持使用X.509數(shù)字認(rèn)證,如果需要的話用戶可以確認(rèn)發(fā)送者是誰(shuí)。。

SSL (Secure Socket Layer)簡(jiǎn)介

為Netscape 所研發(fā),用以保障在Internet 上數(shù)據(jù)傳輸之安全,利用數(shù)據(jù)加密(Encryption)技術(shù),可確保數(shù)據(jù)在網(wǎng)絡(luò)上之傳輸過(guò)程中不會(huì)被截取及竊聽(tīng)。

(附)SSL 工作原理

SSL 協(xié)議使用不對(duì)稱加密技術(shù)實(shí)現(xiàn)會(huì)話雙方之間信息的安全傳遞。可以實(shí)現(xiàn)信息傳遞的保密性、完整性,并且會(huì)話雙方能鑒別對(duì)方身份。不同于常用的http 協(xié)議,我們?cè)谂c網(wǎng)站建立SSL 安全連接時(shí)使用https 協(xié)議,即采用的方式來(lái)訪問(wèn)。

當(dāng)我們與一個(gè)網(wǎng)站建立https 連接時(shí),我們的瀏覽器與Web Server之間要經(jīng)過(guò)一個(gè)握手的過(guò)程來(lái)完成身份鑒定與密鑰交換,從而建立安全連接。具體過(guò)程如下:

1. 用戶瀏覽器將其SSL 版本號(hào)、加密設(shè)置參數(shù)、與session 有關(guān)的數(shù)據(jù)以及其它一些必要信息發(fā)送到服務(wù)器。

2. 服務(wù)器將其SSL 版本號(hào)、加密設(shè)置參數(shù)、與session 有關(guān)的數(shù)據(jù)以及其它一些必要信息發(fā)送給瀏覽器,同時(shí)發(fā)給瀏覽器的還有服務(wù)器的證書(shū)。如果配置服務(wù)器的SSL 需要驗(yàn)證用戶身份,還要發(fā)出請(qǐng)求要求瀏覽器提供用戶證書(shū)。

3. 客戶端檢查服務(wù)器證書(shū),如果檢查失敗,提示不能建立SSL 連接。如果成功,那么繼續(xù)。

4. 客戶端瀏覽器為本次會(huì)話生成pre-master secret ,并將其用服務(wù)器公鑰加密后發(fā)送給服務(wù)器。

,

5. 如果服務(wù)器要求鑒別客戶身份,客戶端還要再對(duì)另外一些數(shù)據(jù)簽名后并將其與客戶端證書(shū)一起發(fā)送給服務(wù)器。

6. 如果服務(wù)器要求鑒別客戶身份,則檢查簽署客戶證書(shū)的CA 是否可信。如果不在信任列表中,結(jié)束本次會(huì)話。如果檢查通過(guò),服務(wù)器用自己的私鑰解密收到的pre-master secret ,并用它通過(guò)某些算法生成本次會(huì)話的master secret。

7. 客戶端與服務(wù)器均使用此master secret生成本次會(huì)話的會(huì)話密鑰(對(duì)稱密鑰) 。在雙方SSL 握手結(jié)束后傳遞任何消息均使用此會(huì)話密鑰。這樣做的主要原因是對(duì)稱加密比非對(duì)稱加密的運(yùn)算量低一個(gè)數(shù)量級(jí)以上,能夠顯著提高雙方會(huì)話時(shí)的運(yùn)算速度。

8. 客戶端通知服務(wù)器此后發(fā)送的消息都使用這個(gè)會(huì)話密鑰進(jìn)行加密。并通知服務(wù)器客戶端已經(jīng)完成本次SSL 握手。

9. 服務(wù)器通知客戶端此后發(fā)送的消息都使用這個(gè)會(huì)話密鑰進(jìn)行加密。并通知客戶端服務(wù)器已經(jīng)完成本次SSL 握手。

10. 本次握手過(guò)程結(jié)束,會(huì)話已經(jīng)建立。雙方使用同一個(gè)會(huì)話密鑰分別對(duì)發(fā)送以及接受的信息進(jìn)行加、解密。

二、tomcat 實(shí)現(xiàn)SSL 配置

第一步 生成KeyStore

keytool -genkey -alias tomcat -keyalg RSA –keysize 1024 –validity 730 -keystore D:server.keystore

生成.keystore 文件在 用戶目錄下

輸入keystore 密碼: ************

您的名字與姓氏是什么?

[Unknown]: localhost

您的組織單位名稱是什么?

[Unknown]: dept

您的組織名稱是什么?

[Unknown]: Inc

您所在的城市或區(qū)域名稱是什么?

[Unknown]: bj

您所在的州或省份名稱是什么?

[Unknown]: bj

該單位的兩字母國(guó)家代碼是什么

[Unknown]: CN

CN=localhost, OU= dept, O= Inc, L=bj, ST=bj, C=CN 正確嗎?

[否]: Y

輸入的主密碼

(如果和 keystore 密碼相同,按回車):*************

注意: localhost ,是網(wǎng)站的域名或者ip, 根據(jù)實(shí)際情況填寫(xiě),比如 www.baidu.com 192.168.0.85 否則會(huì)出現(xiàn)證書(shū)上的名稱無(wú)效,或者與站點(diǎn)名稱不匹配。

,

建議:將生成的 server.keystore 文件,放到TOMCAT_HOME或其子目錄中(如:TOMCAT_HOME/conf)

(其實(shí)放哪里都一樣,只是放到TOMCAT_HOME里面會(huì)方便一些)

第二步 修改server.xml

修改TOMCAT_HOME/conf/server.xml

去掉下面SSL HTTP那個(gè)注釋,修改為如下:

Xml 代碼

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

keystoreFile 是server.keystore 放置的位置,keystorePass 是密碼 (默認(rèn)密碼是changeit)

第三步

重啟Tomcat ,訪問(wèn)地址https://ip:8443/

,

(附錄:)tomcat 的配置文件SSL 部分詳細(xì)說(shuō)明 配置文件server.xml ,SSL 部分:

Xml 代碼

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55 ,

56

57

58

59

60

61

62 secure ="true" clientAuth ="false" sslProtocol ="TLS" keystoreFile ="D:/Tomcat/conf/tomcatKey.keystore" keystorePass ="changeit" algorithm ="SunX509" />

屬性說(shuō)明:

port : 這個(gè)port 屬性(默認(rèn)值是8443) 是 TCP/IP端口數(shù)碼,Tomcat 在其上監(jiān)聽(tīng)安全連接。你可以把它更改成任何你愿意要的數(shù)值(如默認(rèn)的https 通信,數(shù)目是443) 。不過(guò),在許多操作系統(tǒng)中,要想在比1024小的端口數(shù)碼上運(yùn)行Tomcat ,需要特殊的設(shè)置(它超出了這個(gè)文檔資料的范圍) 。

redirectPort : 如果你在這里更改端口數(shù)值,你還必須更改在non-SSL 連接器上的redirectPort 這個(gè)屬性特定的值。這允許Tomcat 自動(dòng)地redirect 那些試圖訪問(wèn)有安全限制頁(yè)面的用戶,指明根據(jù) Servlet 2.4 Specification要求,SSL 是必需的

clientAuth : 如果你想要Tomcat 要求所有的SSL 客戶在使用這個(gè)socket 時(shí)出示用戶認(rèn)證書(shū),把這個(gè)值設(shè)定為 true 。如果你想要Tomcat 要求出示用戶認(rèn)證書(shū),但是如果沒(méi)有認(rèn)證書(shū)也可以, 就把這個(gè)值設(shè)定為want 。

keystoreFile : 如果你產(chǎn)生的keystore 文件不在Tomcat 期望的默認(rèn)地方(一個(gè)叫做.keystore 的文件在Tomcat 運(yùn)行的主目錄) ,就添加這個(gè)屬性。你可以指定一個(gè)絕對(duì)路徑名稱, 或者一個(gè)由$CATALINA_BASE環(huán)境變量而派生的相對(duì)路徑名稱。

keystorePass : 如果你使用一個(gè)不同的keystore(以及認(rèn)證書(shū)) 密碼,而不是Tomcat 期望的密碼 (就是changeit) ,添加這個(gè)元素。

keystoreType : 如果使用一個(gè)PKCS12 keystore的話,就添加這個(gè)element 。 有效的值是JKS 和 PKCS12

sslProtocol : 要在這個(gè)socket 上被使用的加密/解密協(xié)定。如果你在使用Sun 的JVM ,我們不提倡更改 這個(gè)值。據(jù)報(bào)道,TLS 協(xié)定的IBM's 1.4.1 實(shí)現(xiàn)與一些通用的瀏覽器不兼容。 如果是這樣,就使用value SSL

ciphers : 這個(gè)socket 允許使用的由逗號(hào)分隔開(kāi)的加密密碼列單。默認(rèn)的情況下,任何可用的密碼都允許被使用。

algorithm : 可用的X509算法。默認(rèn)是Sun 的實(shí)現(xiàn)( SunX509 ) 。 對(duì)于IBM JVMs ,你應(yīng)該使用值 IbmX509。對(duì)于其他賣主,查閱JVM 文檔資料來(lái) 找正確的值。

truststoreFile : 用來(lái)驗(yàn)證用戶認(rèn)證書(shū)的TrustStore 文件。

,

truststorePass : 訪問(wèn)TrustStore 的密碼。默認(rèn)值就是keystorePass 的值。

truststoreType : 如果你在使用與KeyStore 不同格式的TrustStore ,添加這個(gè)元素。 合法的值是JKS 和PKCS12

keyAlias : 如果 keystore 里面有多個(gè) key ,你可以為用這個(gè)選項(xiàng)為加入的 key 起一個(gè)名字。 如果沒(méi)有指定名字,使用時(shí) keystore 內(nèi)的第一個(gè) key 將會(huì)被使用

標(biāo)簽: