请教: Axis客户端调用https web service的问题
我用axis做客户端访问web service, http的没有问题, 服务器端切换到https出现问题, 这个在意料之中, 查阅一些技术文章做了如下改动:
1. 拿到server端的证书(一个基于base64的cer文件)
2. 用keytool导入证书到本地
还没走到下面, 导入就出错了. 我的命令为:
keytool -import -file abc.cer -keystore mykeystore -storepass 111111
错误为: keytool错误: java.lang.Exception: 所输入的不是一个 X.509 认证
运行 keytool -printcert -file abc.cer也出错:
sun.security.pkcs.ParsingException: X509.ObjectIdentifier() -- data isn't an obj
ect ID (tag = 48)
at sun.security.pkcs.PKCS7.parse(PKCS7.java:118)
at sun.security.pkcs.PKCS7.<init>(PKCS7.java:68)
at sun.security.provider.X509Factory.parseX509orPKCS7Cert(X509Factory.ja
va:530)
at sun.security.provider.X509Factory.engineGenerateCertificates(X509Fact
ory.java:407)
at java.security.cert.CertificateFactory.generateCertificates(Certificat
eFactory.java:511)
at sun.security.tools.KeyTool.doPrintCert(KeyTool.java:1021)
at sun.security.tools.KeyTool.doCommands(KeyTool.java:539)
at sun.security.tools.KeyTool.run(KeyTool.java:124)
at sun.security.tools.KeyTool.main(KeyTool.java:118)
Caused by: java.io.IOException: X509.ObjectIdentifier() -- data isn't an object
ID (tag = 48)
at sun.security.util.ObjectIdentifier.<init>(ObjectIdentifier.java:134)
at sun.security.util.DerInputStream.getOID(DerInputStream.java:250)
at sun.security.pkcs.ContentInfo.<init>(ContentInfo.java:120)
at sun.security.pkcs.PKCS7.parse(PKCS7.java:136)
at sun.security.pkcs.PKCS7.parse(PKCS7.java:115)
... 8 more
keytool错误: java.lang.Exception: 无法对输入进行语法分析
服务器证书是在iis中用windows 2003 server的CA生成的. 然后我尝试用keytool产生证书给server用,但server无法导入
有几个问题:
1. iis的证书如何用keytool导入本地?
2. java产生的SSL证书是否可以导入iis?
3. 有什么简便的方法使客户端简单地转为能够访问https? 注意我使用axis, 和server通信的代码都是框架生成的, 所以希望能有高
层的实现
PS: 在这里发过几次求助帖, 没有得到特别有帮助的回答, 高手不要潜水, 多谢!