锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
涓銆佸畾涔変竴涓猨s鏂規(guī)硶銆?br />
function request(paras){
var url = location.href;
var paraString = url.substring(url.indexOf("?")+1,url.length).split("&");
var paraObj = {}
for (i=0; j=paraString[i]; i++){
paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length);
}
var returnValue = paraObj[paras.toLowerCase()];
if(typeof(returnValue)=="undefined"){
return "";
}else{
return returnValue;
}
}
璋冪敤鏃剁洿鎺ワ細(xì)var value=request('鍙傛暟鍚?);
浜屻佺敤姝e垯琛ㄨ揪寮?br />
//鑾峰彇jsp欏甸潰url鍙傛暟鐨勫鹼紝鐩稿綋浜巖equest.getParameter('')涓鏍楓?br />
function getUrlParam(name){
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r!=null) return unescape(r[2]); return null;
}
璋冪敤榪囩▼鍚屼笂銆傚 va markerId=getUrlParam('property_id'); 鍒欏彲浠ヨ幏鍙杙roperty_id鐨勫箋?
鏉ユ簮錛氳禌榪綉
浣滆咃細(xì)鏉庣礌縐?
(杞澆搴忥細(xì)緗戜笂鎵劇殑濂芥枃绔狅紝涓綃囧氨鎶婃垜鎵句簡鍑犲ぉ鐨勬墍鏈変笢瑗塊兘姒傛嫭榪涙潵浜嗭紝鐪熸槸闈炲父鎰熻阿浣滆咃細(xì)鏉庣礌縐?nbsp; 鍏跺疄鍦ㄦ壘璧勬枡鐨勮繃紼嬪綋涓紝涓昏娌¤В鍐崇殑闂鍦ㄤ簬濡備綍鑾峰緱KeyStore鏂囦歡涓殑PrivateKey錛屾湰鏉ユ煡jsdk 1.4 api鏂囨。灝卞彲浠ョ煡閬撲簡錛屼絾鏄眳鐒朵粠涓婂埌涓嬬湅浜?閬嶏紝娌℃湁鍙戠幇榪欎釜鏂規(guī)硶:load() .......)
璇佷功(Certificate錛屼篃縐皃ublic-key certificate)鏄敤鏌愮絳懼悕綆楁硶瀵規(guī)煇浜涘唴瀹?姣斿鍏挜)榪涜鏁板瓧絳懼悕鍚庡緱鍒扮殑銆佸彲浠ョ敤鏉ュ綋鎴愪俊浠誨叧緋諱腑浠嬬殑鏁板瓧鍑瘉銆傝瘉涔﹀彂琛屾満鏋勯氳繃鍙戣璇佷功鍛婄煡璇佷功浣跨敤鑰呮垨瀹炰綋鍏跺叕閽?public-key)浠ュ強(qiáng)鍏跺畠涓浜涜緟鍔╀俊鎭傝瘉涔﹀湪鐢?shù)瀛愬晢鍔″畨鍏ㄤ氦鏄撲腑鏈夌潃騫挎硾鐨勫簲鐢紝璇佷功鍙戣鏈烘瀯涔熺ОCA(Certificate Authority)銆?
璇佷功鍦ㄥ叕閽ュ姞瀵嗗簲鐢ㄤ腑鐨勪綔鐢ㄦ槸淇濊瘉鍏挜鍦ㄦ煇浜涘彲淇$殑鏈烘瀯鍙戝竷錛屽叾鍦ㄥ崗璁甋SL銆佺數(shù)瀛愪氦鏄撳崗璁甋ET絳夋柟闈㈡湁閲嶈鐨勫簲鐢ㄣ傚浘1鏄劇ず浜嗕竴涓渶綆鍗曠殑璇佷功搴旂敤鏂規(guī)硶錛?
璇佷功鐨勫簲鐢ㄦ楠ゆ槸錛?
錛?錛?A鎶婅嚜宸辯殑鍏挜PKA閫佸埌CA(Certificate Authority)錛?
錛?錛?CA鐢ㄨ嚜宸辯殑縐侀挜鍜孉鐨勫叕閽ョ敓鎴怉鐨勮瘉涔︼紝璇佷功鍐呭寘鎷珻A鐨勬暟瀛楃鍚嶃傜鍚嶅璞″寘鎷渶瑕佸湪璇佷功涓鏄庣殑鍐呭錛屾瘮濡侫鐨勫叕閽ャ佹椂闂存埑銆佸簭鍒楀彿絳夛紝涓轟簡綆鍖栬繖閲屼笉濡ㄥ亣璁捐瘉涔︿腑鍙湁涓夐」鍐呭錛欰鐨勫叕閽KA銆佹椂闂存埑TIME1銆佸簭鍒楀彿IDA銆傞偅涔圕A鍙戦佺粰A鐨勭畝鍗曡瘉涔﹀嚟璇佸彲琛ㄨ揪涓猴細(xì)CertA=Eca[TIME1,IDA,PKA]錛?
錛?錛?B鍚屾牱鎶婅嚜宸辯殑鍏挜PKB閫佸埌CA錛?
錛?錛?B寰楀埌CA鍙戝竷鐨勮瘉涔ertB;
錛?錛?A鍛婄煡B璇佷功CertA錛?
錛?錛?B鍛婄煡A璇佷功CertB銆?
A銆丅鍚勮嚜寰楀埌瀵規(guī)柟璇佷功鍚庯紝鍒╃敤浠嶤A寰楀埌鐨勫叕閽?鍦–A鐨勮嚜絳捐瘉涔︿腑)楠岃瘉褰兼瀵規(guī)柟鐨勮瘉涔︽槸鍚︽湁鏁堬紝濡傛灉鏈夋晥錛岄偅涔堝氨寰楀埌浜嗗郊姝ょ殑鍏挜銆傚埄鐢ㄥ鏂圭殑鍏挜錛屽彲浠ュ姞瀵嗘暟鎹紝涔熷彲浠ョ敤鏉ラ獙璇佸鏂圭殑鏁板瓧絳懼悕銆?
鏈枃涓轟簡鏂逛究璇存槑錛屽茍娌℃湁浣跨敤浠嶤A鑾峰緱鐨勮瘉涔︼紝鑰屾槸閫氫俊鍙屾柟鍚勮嚜浜х敓鑷璇佷功錛屼篃灝辨槸璇村浘1鐨凙鍜孊騫舵病鏈夌粡榪嘋A錛屼笉榪囧墠鎻愭槸A鍜孊涔嬮棿鏄簰鐩告嫢鏈夊鏂圭殑璇佷功銆?
璇佷功鐨勫唴瀹瑰拰鎰忎箟濡傝〃1鎵紺猴紙榪欓噷浠ラ氱敤X .509璇佷功鏍煎紡涓轟緥錛夈?
璇佷功鍐呭 | 鎰忎箟 |
Version | 鍛婅瘔榪欎釜X.509璇佷功鏄摢涓増鏈殑錛岀洰鍓嶆湁v1銆乂2銆乿3 |
Serial Number | 鐢辮瘉涔﹀垎鍙戞満鏋勮緗瘉涔︾殑搴忓垪鍙?/td> |
Signature Algorithm Identifier | 璇佷功閲囩敤浠涔堟牱鐨勭鍚嶇畻娉?/td> |
Issuer Name | 璇佷功鍙戣鑰呭悕錛屼篃灝辨槸緇欒繖涓瘉涔︾鍚嶇殑鏈烘瀯鍚?/td> |
Validity Period | 璇佷功鏈夋晥鏃墮棿鑼冨洿 |
Subject Name | 琚瘉涔﹀彂琛屾満鏋勭鍚嶅悗鐨勫叕閽ユ嫢鏈夎呮垨瀹炰綋鐨勫悕瀛楋紝閲囩敤X.500鍗忚錛屽湪Internet涓婄殑鏍囧織鏄儫涓鐨勩備緥濡傦細(xì)CN=Java,OU=Infosec,O=Infosec Lab,C=CN琛ㄧず涓涓猻ubject name銆?/td> |
瀵硅瘉涔︾殑璇︾粏瀹氫箟鍙?qiáng)鍏跺簲鐢ㄧ浉鍏崇殑鍚効U嶅崗璁紝榪欓噷涓嶅姞璇︾粏璇存槑錛岃緇嗙粏鑺傝鏌ョ湅RFC2450銆丷FC2510銆丷FC2511銆丷FC2527銆丷FC2528銆丷FC2559銆丷FC2560銆丷FC2585銆丷FC2587絳夋枃妗c?
涓漢鎴栨満鏋勫彲浠ヤ粠淇′換鐨勮瘉涔﹀垎鍙戞満鏋勭敵璇峰緱鍒拌瘉涔︼紝姣斿璇達(dá)紝鍙互浠巋ttp://ca.pku.edu.cn 寰楀埌涓涓睘浜庝釜浜虹殑璇佷功銆傝繖閲屽彲浠ュ埄鐢↗2SDK鐨勫畨鍏ㄥ伐鍏穔eytool鎵嬪伐浜х敓鑷璇佷功錛屾墍璋撹嚜絳捐瘉涔︽槸鎸囪瘉涔︿腑鐨?#8220;Subject Name”鍜?#8220;Issuer Name”鐩稿悓鐨勮瘉涔︺?
涓嬮潰浜х敓涓涓嚜絳捐瘉涔︺傚畨瑁呭畬J2SDK錛堣繖閲岀敤鐨勬槸J2SDK1.4錛夊悗錛屽湪J2SDK瀹夎鐩綍鐨刡in鐩綍涓嬶紝鏈変竴涓猭eytool鐨勫彲鎵ц紼嬪簭銆傚埄鐢╧eytool浜х敓鑷璇佷功鐨勬楠ゅ涓嬶細(xì)
絎竴姝ワ紝鐢?genkey鍛戒護(hù)閫夐」錛屼駭鐢熷叕縐佸瘑閽ュ銆傚湪鎺у埗鍙扮晫闈㈣緭鍏ワ細(xì)keytool -genkey -alias testkeypair -keyalg RSA -keysize 1024 -sigalg MD5withRSA銆傝繖閲岀殑-alias琛ㄧず浣跨敤榪欏鍏瀵嗛挜浜х敓鏂扮殑keystore鍏ュ彛鐨勫埆鍚?keystore鏄敤鏉ュ瓨鏀劇鐞嗗瘑閽ュ鍜岃瘉涔﹂摼鐨勶紝緙虹渷浣嶇疆鏄湪浣跨敤鑰呬富鐩綍涓嬶紝浠?keystore涓哄悕鐨勯殣钘忔枃浠訛紝褰撶劧涔熷彲鎸囧畾鏌愪釜璺緞瀛樻斁.keystore鏂囦歡)錛?keyalg鏄駭鐢熷叕縐侀挜瀵規(guī)墍鐢ㄧ殑綆楁硶錛岃繖閲屾槸RSA錛?keysize瀹氫箟瀵嗛挜鐨勯暱搴︼紱-sigalg鏄鍚嶇畻娉曪紝閫夋嫨MD5withRSA錛屽嵆鐢≧SA絳懼悕錛岀劧鍚庣敤MD5鍝堝笇綆楁硶鎽樿銆傛帴涓嬫潵錛岀郴緇熶細(xì)鎻愮ず榪涜涓浜涜緭鍏ワ細(xì)
絎簩姝ワ紝浜х敓鑷璇佷功錛岃緭鍏ヤ互涓嬪懡浠わ細(xì)
絎笁姝ワ紝瀵煎嚭鑷璇佷功錛岀敱涓婇潰涓ゆ浜х敓鐨勮瘉涔︼紝宸茬粡瀛樻斁鍦ㄤ互“testkeypair”涓哄埆鍚嶇殑keystore鍏ュ彛浜嗭紝濡傛灉浣跨敤鍏舵枃浠訛紝蹇呴』瀵煎嚭璇佷功銆傝緭鍏?
榪欐牱錛屽氨寰楀埌浜嗕竴涓嚜絳劇殑璇佷功mycert.crt銆傛敞鎰忥紝閫夐」rfc鏄妸璇佷功杈撳嚭涓篟FC1421瀹氫箟鐨勩佺敤Base64鏈緇堢紪鐮佺殑鏍煎紡銆?
Java涓哄畨鍏ㄥ簲鐢ㄦ彁渚涗簡涓板瘜鐨凙PI錛孞2SDK1.4 鐨凧SSE (JavaTM Secure Socket Extension) 鍖呮嫭javax.security.certificate鍖咃紝騫朵笖鎻愪緵瀵硅瘉涔︾殑鎿嶄綔鏂規(guī)硶銆傝屽璇佷功鐨勮鎿嶄綔錛屽彧鐢╦ava.security.cert. CertificateFactory鍜宩ava.security.cert.X509Certificate灝卞彲浠ヤ簡銆備笅闈㈡槸璇誨彇璇佷功鍐呭鐨勯儴鍒嗕唬鐮侊細(xì)
瀹氫箟璇佷功淇℃伅鐨勮鍙栧嚱鏁板涓嬶細(xì)
濡傛灉浠ュ瓧絎︿覆褰㈠紡璇誨彇璇佷功錛屽姞鍏ヤ笅闈ead_Bin榪欎釜鍑芥暟銆傚叾涓瑿ertificateFactory.generateCertificate() 榪欎釜鍑芥暟鍙互浠庤瘉涔︽爣鍑嗙紪鐮?RFC1421瀹氫箟)涓В鍑哄彲璇諱俊鎭俁ead_Bin鍑芥暟浠g爜濡備笅錛?
濡傛灉瑕佸緱鍒板師濮嬭瘉涔︾紪鐮佸悗鐨勪俊鎭紝鍒欏彲鐢ㄥ涓嬩唬鐮侊細(xì)
鏈鍚庣敤榪欎釜灝忕▼搴忕湅涓鐪嬪垰鎵嶇敓鎴愮殑璇佷功mycert.crt鍐呭錛屾妸鏂囦歡鍚嶅啓鍏ain()涓細(xì)
璇佷功mycert.crt鐨勫唴瀹規(guī)樉紺哄鍥?鎵紺猴紝鎵鏈変俊鎭拰Base64鐨勬樉紺哄唴瀹癸紝榪欓噷涓嶅啀鍒椾婦銆?
|
|
|
|
public class urlconnection
{
public static void main(String[] args)
{
StringBuffer document = new StringBuffer();
try
{
URL url = new URL("http://www.163.com");
URLConnection conn = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null)
document.append(line + " ");
reader.close();
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
System.out.println(document.toString());
}
}
==========================================================
鏂規(guī)硶浜岋細(xì)
==========================================================
import java.net.*;
import java.io.*;
public class useSourceViewer
{
public static void main (String[] args)
{
if (args.length > 0)
{
try
{
URL u = new URL(args[0]);
InputStream in = u.openStream( );
in = new BufferedInputStream(in);
Reader r = new InputStreamReader(in);
int c;
while ((c = r.read( )) != -1)
{
System.out.print((char) c);
}
Object o = u.getContent( );
System.out.println("I got a " + o.getClass().getName( ));
}
catch (MalformedURLException e)
{
System.err.println(args[0] + " is not a parseable URL");
}
catch (IOException e)
{
System.err.println(e);
}
}
}
}