å¯ï¼å æ¤ï¼æä¼ éçæ°æ®ä¸å®¹æ被ç½ç»é»å®¢æªè·åç ´è§£ãæ¬æä»ç»HTTPSçä¸ç§å®ç°æ¹æ³
ã
æ¹æ³ä¸ éæè¶
é¾æ¥
è¿æ¯ç®åç½ç«ä¸ä½¿ç¨å¾è¾å¤çæ¹æ³ï¼ä¹æç®åãå¨è¦æ±ä½¿ç¨SSLè¿è¡ä¼ è¾çWebç½é¡µé¾æ¥
ä¸ç´æ¥æ æ使ç¨HTTPSåè®®ï¼ä»¥ä¸æ¯æåéè¦ä½¿ç¨SSLçç½é¡µçè¶
é¾æ¥ï¼
<a href=â
https://192.168.100.100/ok/securePage.jspâ>SSLä¾å</a>
éè¦è¯´æçæ¯ï¼å¨ç½é¡µéçè¶
é¾æ¥å¦æ使ç¨ç¸å¯¹è·¯å¾çè¯ï¼å
¶é»è®¤å¯ç¨åè®®ä¸å¼ç¨è¯¥è¶
é¾æ¥çç½é¡µæèµæºçä¼ è¾åè®®ç¸åï¼ä¾å¦å¨æè¶
é¾æ¥â
https://192.168.100.100/ok/login.jpsâçç½é¡µä¸å
å«å¦ä¸ä¸¤ä¸ªè¶
é¾æ¥ï¼
<a href=â./bessl/exam.jspâ>SSLé¾æ¥</a>
<a href=â
http://192.168.100.100/notssl/index.jspâ>éSSLé¾æ¥
é£ä¹ï¼ç¬¬ä¸ä¸ªé¾æ¥ä½¿ç¨ä¸â
https://192.168.100.100/ok/login.jspâç¸åçä¼ è¾åè®®
HTTPSï¼ç¬¬äºä¸ªé¾æ¥ä½¿ç¨æ¬èº«ææ è¯çåè®®HTTPã
使ç¨éæè¶
é¾æ¥ç好å¤æ¯å®¹æå®ç°ï¼ä¸éè¦é¢å¤å¼åãç¶èï¼å®å´ä¸å®¹æç»´æ¤ç®¡ç; å
为å¨ä¸ä¸ªå®å
¨ä½¿ç¨HTTPå议访é®çWebåºç¨éï¼æ¯ä¸ªèµæºé½åæ¾å¨è¯¥åºç¨ç¹å®æ ¹ç®å½ä¸ç
å个åç®å½éï¼èµæºçé¾æ¥è·¯å¾é½ä½¿ç¨ç¸å¯¹è·¯å¾ï¼è¿æ ·åæ¯ä¸ºäºæ¹ä¾¿åºç¨çè¿ç§»å¹¶ä¸æ
äºç®¡çãä½åå¦è¯¥åºç¨çæäºèµæºè¦ç¨å°HTTPSåè®®ï¼å¼ç¨çé¾æ¥å°±å¿
须使ç¨å®æ´çè·¯å¾
ï¼æ以å½åºç¨è¿ç§»æéè¦æ´æ¹URLä¸ææ¶åçä»»ä½é¨åå¦ï¼ååãç®å½ãæ件åçï¼ç»´æ¤
è
é½éè¦å¯¹æ¯ä¸ªè¶
é¾æ¥ä¿®æ¹ï¼å·¥ä½éä¹å¤§å¯æ³èç¥ãåè
ï¼å¦æ客æ·å¨æµè§å¨å°åæ é
æå·¥è¾å
¥HTTPSåè®®çèµæºï¼é£ä¹æææææºå¯æ°æ®å¨ä¼ è¾ä¸å°±å¾ä¸å°ä¿æ¤ï¼å¾å®¹æ被é»
客æªè·å篡æ¹ï¼
æ¹æ³äº èµæºè®¿é®éå¶
为äºä¿æ¤Webåºç¨ä¸çæææ°æ®ï¼é²æ¢èµæºçéæ³è®¿é®åä¿è¯ä¼ è¾çå®å
¨æ§ï¼Java Serv
let 2.2è§èå®ä¹äºå®å
¨çº¦æï¼Security-Constraintï¼å
件ï¼å®ç¨äºæå®ä¸ä¸ªæå¤ä¸ªWe
bèµæºéçå®å
¨çº¦ææ¡ä»¶ï¼ç¨æ·æ°æ®çº¦æï¼User-Data-Constraintï¼å
件æ¯å®å
¨çº¦æå
件
çåç±»ï¼å®ç¨äºæå®å¨å®¢æ·ç«¯å容å¨ä¹é´ä¼ è¾çæ°æ®æ¯å¦ä½è¢«ä¿æ¤çãç¨æ·æ°æ®çº¦æå
件è¿å
æ¬äºä¼ è¾ä¿è¯ï¼Transport-Guaranteeï¼å
件ï¼å®è§å®äºå®¢æ·æºåæå¡å¨ä¹é´çé
ä¿¡å¿
é¡»æ¯ä»¥ä¸ä¸ç§æ¨¡å¼ä¹ä¸ï¼NoneãIntegralãConfidentialãNone表示被æå®çWebèµ
æºä¸éè¦ä»»ä½ä¼ è¾ä¿è¯ï¼Integral表示客æ·æºä¸æå¡å¨ä¹é´ä¼ éçæ°æ®å¨ä¼ éè¿ç¨ä¸ä¸
ä¼è¢«ç¯¡æ¹; Confidential表示æ°æ®å¨ä¼ éè¿ç¨ä¸è¢«å å¯ã大å¤æ°æ
åµä¸ï¼IntegralæCo
nfidentialæ¯ä½¿ç¨SSLå®ç°ã
è¿é以BEAçWebLogic Server 6.1为ä¾ä»ç»å
¶å®ç°æ¹æ³ï¼WebLogicæ¯ä¸ä¸ªæ§è½åè¶çJ2
EEæå¡å¨ï¼å®å¯ä»¥å¯¹æ管ççWebèµæºï¼å
æ¬EJBãJSPãServletåºç¨ç¨åºè®¾ç½®è®¿é®æ§å¶
æ¡æ¬¾ãå设æ个åºç¨å»ºç«å¨Weblogic Serveréç/mywebAPPç®å½ä¸ï¼å
¶ä¸ä¸é¨åServle
tsãJSPsè¦æ±ä½¿ç¨SSLä¼ è¾ï¼é£ä¹å¯å°å®ä»¬é½æ¾å¨/mywebAPP/sslsource/ç®å½éï¼ç¶åç¼
è¾/secureAPP/Web-INF/web.xmlæ件ï¼éè¿å¯¹web.xmlç设置å¯è¾¾å°å¯¹Webç¨æ·å®ç°è®¿é®
æ§å¶ã
å½Webç¨æ·è¯å¾éè¿HTTP访é®/sslsourceç®å½ä¸çèµæºæ¶ï¼Weblogic Serverå°±ä¼æ¥æ¾we
b.xmléç访é®çº¦æå®ä¹ï¼è¿åæ示信æ¯ï¼Need SSL connection to access this reso
urceãèµæºè®¿é®éå¶ä¸éæè¶
é¾æ¥ç»å使ç¨ï¼ä¸ä»
继æ¿äºéæè¶
é¾æ¥æ¹æ³çç®åæç¨æ§
ï¼èä¸ææä¿æ¤äºææèµæºæ°æ®ãç¶èï¼è¿æ ·å°±ä¼åå¨ä¸ä¸ªé®é¢ï¼ åå¦Web客æ·ä½¿ç¨HT
TPå议访é®éè¦ä½¿ç¨SSLçç½ç»èµæºæ¶çå°å¼¹åºçæ示信æ¯: Need SSL connection to
access this resourceï¼å¤§é¨å人å¯è½é½ä¸ç¥éåºè¯¥ç¨HTTPSå»è®¿é®è¯¥ç½é¡µï¼é æçåæ
æ¯ç¨æ·ä¼æ¾å¼è®¿é®è¯¥ç½é¡µï¼è¿æ¯Webåºç¨æå¡æä¾åä¸æ¿æçå°çäºæ
ã
æ¹æ³ä¸ é¾æ¥éå®å
综è§ç®ååä¸ç½ç«èµæºæ°æ®ç交äºè®¿é®ï¼è¦æ±ä¸¥æ ¼å å¯ä¼ è¾çæ°æ®åªå å
¶ä¸ä¸å°é¨åï¼
ä¹å°±æ¯è¯´å¨ä¸ä¸ªå
·ä½Webåºç¨ä¸éè¦ä½¿ç¨SSLçæå¡ç¨åºåªå æ´ä½çä¸å°é¨åãé£ä¹ï¼æ
们å¯ä»¥ä»åºç¨å¼åæ¹é¢èè解å³æ¹æ³ï¼å¯¹éè¦ä½¿ç¨HTTPSåè®®çé£é¨åJSPsãServletsæ
EJBsè¿è¡å¤çï¼ä½¿ç¨åºæ¬èº«å¨æ¥æ¶å°è®¿é®è¯·æ±æ¶é¦å
å¤æ该请æ±ä½¿ç¨çåè®®æ¯å¦ç¬¦åæ¬
ç¨åºçè¦æ±ï¼å³æ¥è®¿è¯·æ±æ¯å¦ä½¿ç¨HTTPSåè®®ï¼å¦æä¸æ¯å°±å°å
¶è®¿é®åè®®éå®å为HTTPS
ï¼è¿æ ·å°±é¿å
äºå®¢æ·ä½¿ç¨HTTPå议访é®è¦æ±ä½¿ç¨HTTPSåè®®çWebèµæºæ¶ï¼çå°é误æ示
ä¿¡æ¯æ æéä»çæ
åµï¼è¿äºå¤ç对Web客æ·æ¥è¯´æ¯éæçã
å®ç°ææ³æ¯ï¼é¦å
å建ä¸ä¸ªç±»ï¼è¯¥ç±»æ¹æ³å¯ä»¥å®ç°èªå¨å¼å¯¼Web客æ·ç访é®è¯·æ±ä½¿ç¨HTT
PSåè®®ï¼æ¯ä¸ªè¦æ±ä½¿ç¨SSLè¿è¡ä¼ è¾çServletsæJSPså¨ç¨åºå¼å§æ¶è°ç¨å®è¿è¡åè®®éå®
åï¼æåæè¿è¡æ°æ®åºç¨å¤çã
J2EEæä¾äºä¸¤ç§é¾æ¥éå®åæºå¶ã第ä¸ç§æºå¶æ¯RequestDispatcheræ¥å£éçforward()
æ¹æ³ã使ç¨MVC(Model-View-Controller)æºå¶çWebåºç¨é常é½ä½¿ç¨è¿ä¸ªæ¹æ³ä»Servlet
转移请æ±å°JSPãä½è¿ç§è½¬ååªè½æ¯åç§åè®®é´ç转åï¼å¹¶ä¸è½éå®åå°ä¸åçåè®®ã第
äºç§æºå¶æ¯ä½¿ç¨HTTPServletReponseæ¥å£éçsendRedirect()æ¹æ³ï¼å®è½ä½¿ç¨ä»»ä½åè®®
éå®åå°ä»»ä½URLï¼ä¾å¦ï¼
BeSslResponse.sendRedirect(â
https://192.168.100.100/orderâ);
æ¤å¤ï¼æ们è¿é使ç¨å°Java Servlet APIä¸ç两个æ¹æ³ï¼ServletRequestæ¥å£ä¸çgetS
cheme()ï¼å®ç¨äºè·å访é®è¯·æ±ä½¿ç¨çä¼ è¾åè®®ï¼HTTPUtilsç±»ä¸çgetRequestUrl()ï¼å®
ç¨äºè·å访é®è¯·æ±çURLï¼è¦æ³¨æçæ¯è¯¥æ¹æ³å¨Servlet 2.3ä¸å·²è¢«ç§»å°HTTPServletReq
uestæ¥å£ã
以ä¸æ¯å®ç°åè®®éå®åçåºæ¬æ¥éª¤ï¼
1. è·å访é®ç请æ±æ使ç¨çåè®®ï¼
2. å¦æ请æ±å议符å被访é®çServletæè¦æ±çåè®®ï¼å°±è¯´æå·²ç»ä½¿ç¨HTTPSåè®®äºï¼ä¸
éåä»»ä½å¤çï¼
3. å¦æä¸ç¬¦åï¼ä½¿ç¨Servletæè¦æ±çåè®®(HTTPS)éå®åå°ç¸åçURLã
ä¾å¦ï¼æWebç¨æ·ä½¿ç¨HTTPå议访é®è¦æ±ä½¿ç¨HTTPSåè®®çèµæºBeSslServletï¼æ²å
¥âUR
Lï¼
http://192.168.100.100/BeSslServletâï¼å¨æ§è¡BeSslServletæ¶é¦å
使ç¨Proces
sSslServletï¼processSslï¼ï¼éå®åå°
https://192.168.100.100/BeSslServletï¼ç¶å
BeSslServletä¸å®¢æ·æµè§å¨ä¹é´å°±éè¿HTTPSåè®®è¿è¡æ°æ®ä¼ è¾ã
以ä¸ä»ç»çä»
æ¯æç®åçä¾åï¼æ¯ä¸ºäºå¯¹è¿ç§éå®åçæ¹æ³æ个åæ¥ç认è¯ãåå¦æ³ç
æ£å¨Webåºç¨ä¸å®ç°ï¼è¿å¿
é¡»èèå¦ä¸å 个é®é¢ï¼
â å¨Webåºç¨ä¸å¸¸å¸¸ä¼ç¨å°GETæPostæ¹æ³ï¼è®¿é®è¯·æ±çURLä¸å°±ä¼å¸¦ä¸ä¸äºæ¥è¯¢å串ï¼
è¿äºå串æ¯ä½¿ç¨getRequesUrl()æ¶è·åä¸å°çï¼èä¸å¨éå®åä¹åä¼ä¸¢å¤±ï¼æ以å¿
é¡»å¨
éå®åä¹åå°å®ä»¬å å
¥å°æ°çURLéãæ们å¯ä»¥ä½¿ç¨request.getQueryString()æ¥è·åG
ETçæ¥è¯¢å串ï¼å¯¹äºPostçRequeståæ°ï¼å¯ä»¥æå®ä»¬è½¬æ¢ææ¥è¯¢ä¸²åè¿è¡å¤çã
â æäºWebåºç¨è¯·æ±ä¸ä¼ä½¿ç¨å¯¹è±¡ä½ä¸ºå
¶å±æ§ï¼å¿
é¡»å¨éå®åä¹åå°è¿äºå±æ§ä¿åå¨è¯¥
Sessionä¸ï¼ä»¥ä¾¿éå®åå使ç¨ã
â 大å¤æ°æµè§å¨ä¼æ对åä¸ä¸ªä¸»æºçä¸å端å£ç访é®å½ä½å¯¹ä¸åç主æºè¿è¡è®¿é®ï¼åç¨
ä¸åçSessionï¼ä¸ºäºä½¿éå®ååä¿ç使ç¨åæ¥çSessionï¼å¿
须对åºç¨æå¡å¨çCookie
ååè¿è¡ç¸åºç设置ã
以ä¸é®é¢åå¯å¨ç¨åºè®¾è®¡ä¸è§£å³ã
éè¿ç¨åºèªèº«å®ç°åè®®éå®åï¼å°±å¯ä»¥æè¦æ±ä¸¥æ ¼ä¿æ¤çé£é¨åèµæºä¸å
¶ä»æ®éæ°æ®ä»
é»è¾ä¸åå¼å¤çï¼ä½¿å¾è¦æ±ä½¿ç¨SSLçèµæºåä¸éè¦ä½¿ç¨SSLçèµæºååæéï¼é¿å
浪费
ç½ç«çç³»ç»èµæºã