屋顶上的木帷幕

海鸥之所以追着渔船飞,是因为它们认为会有沙丁鱼抛向大海 - Eric Cantona, 1995
随笔 - 146, 评论 - 3169, 引用 - 56

导航

关于


标签

每月存档

最新留言

广告

 

有人问起怎么在.NET 1.1里面用byte[]创建X509Certificate实例,以及怎么用X509Certificate来访问需要客户端证书的Web Service。MSDN里面对.NET 1.1里面怎么用证书讲的不是很完整,虽然有例子代码,但是第一次用的人还是需要费一番精神才能搞出来。我从硬盘里找了段以前的code给了他,顺便也在这里贴一下,也好让各种搜索引擎访问到:

//.net 1.1 version bdk bd = new bdk(); StreamReader reader = new StreamReader(path); //path of .cer file string certbody = reader.ReadToEnd(); certbody=certbody.Replace("-----END CERTIFICATE-----",""); certbody=certbody.Replace("-----BEGIN CERTIFICATE-----",""); certbody=certbody.Replace("\r\n",""); // Get client certificate byte[] certbytes = System.Convert.FromBase64String(certbody); X509Certificate cert = new X509Certificate(certbytes); bd.ClientCertificates.Clear(); bd.ClientCertificates.Add(cert); //Then we can TestConnection //if failed , TestConnection will throw an SoapException, try to catch it string aa; bd.TestConnection("input", out aa);

这里的.cer文件是从Certificates MMC里面export出来的,或者也可以从IE的option里面导出。导出时候要选择"Not to export private key",用"Base64 Encode"格式导出。这里的"bdk"类就是一个Web Service的proxy类,TestConnection()是一个WebMethod。

在.NET 2.0里面,代码就可以简洁得多了,只需要一个调用就可以了,不需要自己手工读文件、去头去尾以及转换成byte[]了。

打印 | 张贴于 2006-03-25 06:04:00 | Tag:Dot NET

留言反馈

#.net 读取证书的扩展域信息怎么读阿? 编辑
证书的操作我最近正在研究,但是关于如何读取证书扩展域信息,以及如何去访问我指定的地值或者路径上的crl来验证证书的可靠性上还弄不明白。
请给点帮助吧。
bao_jrmt@163.com
2006-03-30 16:23:00 | [匿名用户:飞越草原]
#re: X509Certificate代码示例 (.NET 1.1) 编辑
您好,最近偶在做一个项目,是关于数字证书,以及利用它进行数字签名的,偶得开发语言是c#。

现在遇到了一个问题,想要请教:
程序是b/s 结构的,现在偶想要从程序中利用Request.ClientCertificate来获取客户端的数字证书,然后从中提取数字证书上的SubjectName,根据此SubjectName来利用VS.NET 2005中的X509Store类从客户端本地读取相应的证书,然后获取私钥,对要发送的信息进行数字签名,然后发送。
问题:我的想法是像上面一样的,可是具体实现的时候却有一个问题,好像没有权限对客户端本地的证书存储区进行访问,没有办法读取里面的证书。不知道怎样解决这个问题,因为证书存储区好像只是一个“逻辑上的名称”,具体数字证书到底在本地机子上的哪个物理区域存放偶并不知道,也没有找到相关资料。
请帮帮忙吧,谢谢了。偶的电子邮件地址是olivia0318@vip.sina.com 期盼尽快得到您的回复。
2006-03-30 11:45:00 | [匿名用户:olivia ]
#re: X509Certificate代码示例 (.NET 1.1) 编辑
Stream ns = null;

HttpWebRequest httpReq = (HttpWebRequest)HttpWebRequest.Create( url );

System.Security.Cryptography.X509Certificates.X509Certificate certificate = System.Security.Cryptography.X509Certificates.X509Certificate.CreateFromCertFile( ClientInfo.Certificateinfo );
httpReq.ClientCertificates.Add( certificate );

错了,是这样的代码。
2006-03-28 10:14:00 | [匿名用户:juqiang]
#re: X509Certificate代码示例 (.NET 1.1) 编辑
不用这么复杂吧?我们在v1.0里面这么做的:

X509Certificate cert = new X509Certificate();
cert.Clear();
cert.Add(@"c:\windows\mycert.cer");
2006-03-27 21:59:00 | [匿名用户:juqiang]
#re: X509Certificate代码示例 (.NET 1.1) 编辑
hoho,后来反馈了一些想法上去,有些已经做到产品里去了。例如那次有人说smartphone上面的菜单布局采用九宫格比较好。现在的Windows Mobile 2005里面就已经是九宫格的了(smartphone上面)。

不过后来我就不搞Windows Mobile了。后来我跑到MSN组了,一直到现在。:)
2006-03-25 16:50:00 | [匿名用户:mvm]
#re: X509Certificate代码示例 (.NET 1.1) 编辑
我的很想了解去年1月29号你们在一起讨论智能手机得出个啥结论,呵呵
2006-03-25 16:40:00 | [匿名用户:kevin]
#re: X509Certificate代码示例 (.NET 1.1) 编辑
没有使用过,学习学习,转录到我的space中去,呵呵
2006-03-25 16:33:00 | [匿名用户:kevin]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode.MVC引擎 0.5.1.8