客户端用https连接服务器web service的一点心得
来源:互联网 发布:mac双色修容粉多少钱 编辑:程序博客网 时间:2024/04/28 22:40
项目需要用https与服务器进行连接,获取系统需要的一些配置参数。以前是用http进行连接的,客户端代码比较简单,直接使用URL类进行连接并获取输入流即可。试着在浏览器中输入相应的https连接地址,提示证书确认,确认以后就访问到内容了。
改成https以后碰到了一些问题javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error:Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty。没办法,接着google,发现这个问题跟安全连接的证书有关(安全方面的东西不是很了解,只知道这个公钥,用于验证)。查了一下,jdk果然提供了跟证书相关的东西。首先要从服务器那得到证书,想了一下,ie好像可以。试着用ie连接地址,然后出现了证书确认的提示框,点击查看证书-详细信息,点击复制到文件,选择base64编码,导出后生成aa.cer。然后用记事本打开了,大概样子如下:
-----BEGIN CERTIFICATE-----
MIIDITCCAoqgAwIBAgIQS6WuWd7dHMeAfIkikfDiQzANBgkqhkiG9w0BAQQFADBM
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wNjA1MTUyMzE4MTFaFw0w
j8thQJ7StDhAISTBTx/LE0qPlQLfkT3WQOsRb5sQoW/OkV4w9m0TXhWkLsIYngDD
2DJnR/y4HprZmo7M/3wStwO/UiDPIfTzd90SFfCU+pDV41logQ==
-----END CERTIFICATE-----
不用动这个文件,以后直接导入即可。
PS:如果已经点击了证书的确认,可能浏览器就直接打开链接了。这样情况下,可以接着点击ie有下脚的“锁”形符号,即可看见证书。证书搞到手了,接着要然Java环境能够认识它。这里调用的是jdk带的一个exe,keytool.exe(%JAVA_HOME%/bin下有,所以配了java环境变量的话直接能在命令行调用了)。这里我们输入导入命令即可:
D:/>keytool -import -file d:/act/aa.cer -keystore D:/act/crt
输入keystore密码: passwd
Owner: CN=adapter18, OU=tech, O=unsap, L=sh, ST=shanghai, C=zh
发照者: EMAILADDRESS=liuzhenwen@unsap.com, CN=adapter18, OU=tech, O=unsap, L=sh
, ST=shanghai, C=zh
序号: d
有效期间: Fri Sep 26 13:44:35 CST 2008 至: Sat Sep 26 13:44:35 CST 2009
认证指纹:
MD5: D0:01:B6:83:E7:60:CB:7D:3F:F3:F0:04:5F:69:AA:81
SHA1: 7C:61:EA:B6:8D:1C:D8:38:35:AC:2F:01:AC:87:73:46:F7:3F:31:98
信任这个认证? [否]: y
认证已添加至keystore中
D:/>
三个参数分别代表:导入操作,导入的证书文件,导入证书存放的位置(PS:这个路径可以使用相对路径也可以是绝对路径,但是相对路径我没有实验成功)。导入过程中会提示用户输入密码,这个密码是证书的密码
证书是导入成功了,名字为D:/act/crt。
在web service 的客户端程序中加入两句话:
System.setProperty("javax.net.ssl.trustStore","d:/act/crt");
System.setProperty("javax.net.ssl.trustStorePassword","passwd");
把原来的https连接的ip换成了那个域名,即生成证书时的hostname,OK!问题搞定,连接成功。
- 客户端用https连接服务器web service的一点心得
- 客户端用https连接服务器web service的一点心得
- 客户端用https连接服务器的一点心得
- Java客户端用https连接服务器的一点心得
- Service的一点心得
- 客户端用https连接服务器证书问题
- web-service客户端与服务器端的连接
- Java客户端连接https服务器
- 服务器编程的一点心得
- Web学习的一点心得
- iOS 中客户端和服务器的 Web Service 网络通信
- HTTPS的WEB Service访问
- 用gSoap开发 C/C++ 客户端 连接Web Service
- 连接点问题的一点心得
- 画好Web流程图的一点心得
- Web.config权限的一点心得
- 画Web流程图的一点心得
- 读懂JAVA WEB项目的一点心得
- 我的Window编程观.
- 初次使用Ajax
- 在TreeView中获得TreeCtrl指针
- [转] c#.net常用函数和方法集
- C++中接口与实现分离的技术
- 客户端用https连接服务器web service的一点心得
- asp.net基于jquery的ajax二级联动
- SSIS脚本的字符变量连接问题
- 数组结构
- liferay5.1.1 theme开发
- Expression Blend 2 简体中文版下载地址
- 如何制作BAT批处理文档
- xml序列化复杂些对象
- 杀毒有奇招---全面清除计算机病毒!