第一点、把认证加入java安全列表:
在项目开发中,有时会遇到与SSL安全证书导入打交道的,如何把证书导入java中的cacerts证书库呢?
其实很简单,方法如下:
每一步:进入某个https://www.xxx.com开头的网站,把要导入的证书下载过来,
在该网页上右键 >> 属性 >> 点击"证书" >>
再点击上面的"详细信息"切换栏 >>
再点击右下角那个"复制到文件"的按钮
就会弹出一个证书导出的向导对话框,按提示一步一步完成就行了。
例如:保存为abc.cer,放在C盘下
第二步:如何把上面那步的(abc.cer)这个证书导入java中的cacerts证书库里?
方法如下
假设你的jdk安装在C:\jdk1.5这个目录,
开始 >> 运行 >> 输入cmd 进入dos命令行 >>
再用cd进入到C:\jdk1.5\jre\lib\security这个目录下
敲入如下命令回车执行
- keytool -import -alias cacerts -keystore %java_home%\jre\lib\security\cacerts -file C:\abc.cer -trustcacerts
keytool -import -alias cacerts -keystore %java_home%\jre\lib\security\cacerts -file C:\abc.cer -trustcacerts
此时命令行会提示你输入cacerts证书库的密码,
你敲入changeit就行了,这是java中cacerts证书库的默认密码,
你自已也可以修改的。
真实环境:
C:\Program Files\Java\jdk1.6.0_02\jre\lib\security>keytool -import -alias cacert
s -keystore "C:\Program Files\Java\jdk1.6.0_02\jre\lib\security\cacerts" -file C
:\GMCCNet.cer -trustcacerts
输入keystore密码:
所有者:EMAILADDRESS=gmcc@gmcc.net, CN=auth.fs.gmcc.net, OU=gmcc, O=gmcc, ST=gd,
C=cn
签发人:EMAILADDRESS=gmcc@gmcc.net, CN=gmcc, OU=gmcc, O=gmcc, L=gz, ST=gd, C=cn
序列号:4
有效期: Thu Dec 20 15:18:54 CST 2007 至Sun Dec 17 15:18:54 CST 2017
证书指纹:
MD5:B8:23:CA:E4:02:83:98:D0:27:0E:5E:89:55:FF:8A:AB
SHA1:00:A5:BA:E5:30:5F:56:71:1A:C4:AB:C9:E7:8D:0B:67:33:7E:97:A2
签名算法名称:SHA1withRSA
版本: 3
扩展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 4F 2C C9 28 A9 F9 41 DC C0 A3 70 87 39 74 DE D7 O,.(..A...p.9t..
0010: F9 FA 8F D5 ....
]
]
#2: ObjectId: 2.5.29.19 Criticality=false
BasicConstraints:[
CA:false
PathLen: undefined
]
#3: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: E8 84 68 BC 84 1E FB AE 1D 89 CE 2E 04 F3 29 40 ..h...........)@
0010: 6F 3E 10 8C o>..
]
]
#4: ObjectId: 2.16.840.1.113730.1.13 Criticality=false
信任这个认证? [否]: 是
认证已添加至keystore中
C:\Program Files\Java\jdk1.6.0_02\jre\lib\security>
第二点、运行java访问https网站:
java运行:
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpVersion;
import org.apache.commons.httpclient.params.HttpMethodParams;
import com.tds.net.util.HttpPost;
public class test {
public static void main(String[] args) {
System.setProperty("javax.net.ssl.trustStore", "C:\\Program Files\\Java\\jdk1.6.0_02\\jre\\lib\\security\\cacerts");
HttpClient client = new HttpClient();
client.getParams().setVersion(HttpVersion.HTTP_1_1);
client.getParams().setParameter(HttpMethodParams.USER_AGENT,
com.tds.net.util.HttpPost.USER_AGENT_VALUE);
String login_url = "https://10.248.18.25/dana-na/auth/url_default/welcome.cgi";//
// 2008-06-14,根据测试,Boss需要先加载其登录页面,在行登录
String login_returnInfo = HttpPost.getHttpPostFeeBack(client, login_url,new java.util.HashMap());
System.out.println("1================"+login_returnInfo);
///选择登陆方式 setp = 1
java.util.Map login_paramMap = new java.util.HashMap();
login_paramMap.put("tz_offset", "");
login_paramMap.put("username", "it_luoshizhao");
login_paramMap.put("password", "123456");
login_paramMap.put("realm","local radius");
login_paramMap.put("local radius", "local radius");
login_returnInfo = HttpPost.getHttpPostFeeBack(client, login_url,login_paramMap);
System.out.println("2================"+login_returnInfo);
}
}