不用加密的webservice我已经实现,但在需要jks证书方面一筹莫展,有这方面技术的朋友吗?
谢谢您的回复。
webservice 的服务端是java 客户端是c# WSE 3.0. jks 与cer文件已经存在,现在需要如何做呢?
@cwcls: 4. Client端开发与WSE 3.0配置 a) 建立客户端项目。建立一个Console Application WSEClient作为客户端。在项目右键菜单选择WSE Settings 3.0... ,勾选Enable this project for Web Services Enhancements并确定。添加下面的命名空间引用。
b) 添加Web Service引用。引用地址http://机器A IP/WSEServer/MyService.asmx,千万不能用localhost,否则在机器B上无法访问到。Web Reference Name取名为MyServiceRef。 c) Main函数的代码。
上面对serviceProxy.Proxy对象的相关设置,是因为在域环境里面,如果不设置代理以及和代理相关的认证信息,调用Web Service时会有异常,异常信息为:请求因HTTP状态407失败,The ISA Server requires authorization to fulfill the request. Access to the Web Proxy service is denied. 对于Web Service和Client都在本地,或者局域网内不需要使用代理的情况下,这两行代码不需要。 d) 创建安全策略。上面步骤中使用了一个ClientPolicy,但是还没有定义它,接下来就是定义这个安全策略。 首先在机器A(开发环境)的命令行运行下面的命令:certmgr.exe -add -r LocalMachine -s My -c -n MyServiceCert -r CurrentUser -s AddressBook,这个命令将在步骤1中在机器A上建立的证书从Local Machine的Personal拷贝到Current User的Others下面,这是为了在下面定义客户端安全策略的时候能够选择到这个证书。 在项目右键菜单选择WSE Settings 3.0... ,在Policy属性页选择Enable Policy,添加一个Policy命名为ClientPolicy,确定后进入WSE Security Settings Wizard。选择Secure a client application,Client Authentication Method选择Username。勾选Specify Username Token in code。接下来Message Protection的选择跟前面Web Service端的贴图完全一样。然后是选择证书,点击Select Certificate按钮后可以看到MyServiceCert的证书,这个步骤中列出的是在证书管理单元的Current User->Others->Certificates中的看到的证书列表,上面证书拷贝的命令使得在这里能够选择到这份证书。 e) 本地测试。到现在,在开发机器A上面运行Client端,应当可以在Console窗口看到成功调用Web Service的Hello World的结果。
5. 将Client部署到机器B上测试 将下面几个文件拷贝到机器B的测试目录下:WSEClient.exe、WSEClient.exe.config、wse3policyCache.config,在机器B上用记事本打开wse3policyCache.config文件,将下面这一节点:<x509 storeLocation="CurrentUser" storeName="AddressBook" ... />修改成<x509 storeLocation="CurrentUser" storeName="My" ... />,保存。 然后登陆机器B,运行WSEClient.exe,可以看到运行结果如下。 第一点,在客户端机器B上部署,应当包括服务器端证书的导入,我把这个放在步骤1中了。 第二点,集成在VS2005中的WSE 3.0配置工具,在为客户端选择X.509证书时,只能够从Local Machine或者是Current User的Others(其他人)的Store Name中选择证书,但是我看到有的机器上默认情况下这个Others的Store Name是看不到的,在控制台中也没有地方可以把它添加进来,只能够通过执行某些命令行的操作使它出现。基于这样一种情况,在上面的例子中,我在机器A上开发、配置Client时先用命令把证书拷贝到Current User的Others下,使得配置过程中能够选择到证书。而在机器B上部署测试客户端时,是将证书导入到机器B的Current User的Personal(个人)中,并修改配置文件让WSE从Personal读证书信息。