首页 新闻 会员 周边

C#数字证书如何验证.

0
悬赏园豆:20 [已解决问题] 解决于 2015-08-03 09:12

有没有这方面的资料,网上大部分是原理,还有生成文件的,

现在我生成.cer文件和.pfx文件,想要通过文件做验证处理,不知道有没有做过的朋友分享分享经验.

bird man的主页 bird man | 初学一级 | 园豆:4
提问于:2015-07-29 17:40
< >
分享
最佳答案
0

虽然有人回答,但是没多少用处,感觉跟没回答似的

bird man | 初学一级 |园豆:4 | 2015-08-03 09:11
其他回答(3)
0
收获园豆:10
Launcher | 园豆:45045 (高人七级) | 2015-07-29 17:44

非常感谢你的回答,但是貌似你没有理解我的问题

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-07-29 17:47

@bird man: 那你就把问题描述准确点。

支持(0) 反对(1) Launcher | 园豆:45045 (高人七级) | 2015-07-29 17:49

@Launcher: 证书我已经生成了,我想要使用这2个证书实现一个验证(匹配)的功能,好比我现在生成了a.cer文件和a.pfx文件,现在我找个其他的b.pfx文件,在验证的时候,a.pfx是可以通过的,b.pfx是无法验证通过的

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-07-29 17:52

@bird man: 我能猜出你是什么意思,等你理解了后你再回头看你写的话,你都觉得很好笑。

其实你是生成了一个包含公钥和私钥的数字证书文件 a.pfx,然后将 a.pfx 中的公钥导出为 a.cer 文件,现在你有一个 b.pfx 数字证书文件,你想知道 b.pfx 文件中的私钥同 a.cer 文件中的公钥是匹配的。

解决这个问题的关键就是,你得明白 RSA 算法。明白后,解决也很简单,使用 a.cer 的公钥对字符串“bird man”加密,然后用 b.pfx 的私钥解密,解密成功就是你所谓的“验证通过”。

支持(0) 反对(1) Launcher | 园豆:45045 (高人七级) | 2015-07-29 18:00

@Launcher: 因为我刚刚接触这个证书,生成方式确实史你说的那样,之前公司有个项目是我下面说的情况我对这个有点敢兴趣,看了之后我发现他们并没有实现验证,所以想自己了解学习下,

现在是想实现一个sso单点登录,并且使用这个证书去验证,因为我对证书这当方面接触不多,可能我本身的思路就有问题,希望能讲解下,谢谢

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-07-29 18:13

@bird man: 你用什么开发语言?

支持(0) 反对(1) Launcher | 园豆:45045 (高人七级) | 2015-07-31 09:13

@Launcher: 非常感谢你还来回复,我用C#写的,我网上查了好多资料,都是生成证书文件的.或者只是解密的单个文件的

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-07-31 09:33

@bird man: 一定要使用证书吗?

支持(0) 反对(1) Launcher | 园豆:45045 (高人七级) | 2015-07-31 09:36

@Launcher: 也不是说一定要使用证书,只是我个人的一种偏执吧,既然遇到了我就想深入了解下,以防下次自己做的时候会遇到.

因为在创建证书的时候2者是关联的,那么就应该是可以使用这2个来实现验证的,如果说按照网上的直接根据pfx文件和设置的密码去判断的话,那么又何必要生成证书呢,可能也是我个人对证书这方面的不理解吧

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-07-31 09:41

@bird man: 你做过用户身份认证方面的开发吗?

支持(0) 反对(1) Launcher | 园豆:45045 (高人七级) | 2015-07-31 09:45

@Launcher: 不知道你说的是哪一类的认证

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-07-31 09:46

@bird man: 那你跟我说说你说的是哪类认证?

支持(0) 反对(1) Launcher | 园豆:45045 (高人七级) | 2015-07-31 09:51

@Launcher: windows,form,和域

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-07-31 09:53

@bird man: 你说的是 Forms Authenticate 和 NTLM 吗?

支持(0) 反对(1) Launcher | 园豆:45045 (高人七级) | 2015-07-31 09:54

@Launcher: 这个和我问的问题有什么潜在的关联嘛?

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-07-31 09:56

@bird man: 有,我想知道你懂多少,我才能猜出你为什么要在“证书验证”上纠结,从而弄明白你究竟想做什么,然后才能给你解答问题。

支持(0) 反对(1) Launcher | 园豆:45045 (高人七级) | 2015-07-31 09:58

@Launcher: 你也说了验证有好多,为什么一定要用证书,这么说吧,其实也可以算是钻牛角尖,我就是想了解下这个证书如何使用的,以及如何用于验证,而且我并不是想用在用户验证方面,如果说证书是无法实现我说的那种验证那我会放弃,直到下次遇到相关的资料再研究,就好比我之前遇到一个问题,如何判断2个矩形是相交的,虽然从几何学上面是可以使用坐标来判断出来的,但是我就想知道如何用矩阵来实现,因为我认为矩阵更加方便和简单

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-07-31 10:02

@bird man: 可以用矩阵判断,大学《线性代数》上有,所以你不用想知道,只要学习就行了。

请问你说的是哪种验证?能否描述清楚点?既然你在思考矩阵判断矩形的问题,我想你的逻辑应该是有的,因此你描述时请说清楚,输入、判定条件、输出。

支持(0) 反对(1) Launcher | 园豆:45045 (高人七级) | 2015-07-31 10:07

@Launcher: 不好意思刚刚键盘卡了

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-07-31 10:10

@Launcher: 现在想做SSO,一个作为SSO的登录,其他系统作为接入系统,想要接入系统只需要配置一下,引入dll就可以了,这些功能已经实现了,

但是问题是,只要有这个dll和会配置就可以接入了,所以有那个数字证书来做验证去除无效的接入系统,但是我看到SSO的整体功能是我写的,但是那个数字证书验证的不是我写的,我看了代码发现他只是加载了pfx文件初始化的时候使用密码验证的,没有其他的和服务端的cer文件做验证,虽然这不服不算我负责的,但是我就是想知道应该如何去做,或者说是无法用这个证书做

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-07-31 10:14

@bird man: 请问你需要“和服务端的cer文件做验证”是为了什么?

支持(0) 反对(1) Launcher | 园豆:45045 (高人七级) | 2015-07-31 10:22

@Launcher: 好比现在你允许3个系统接入,但是别人有了dll而且会配置,可以直接拿过去接入了,虽然是可以在SSO接入端做判断的,但是我就是想尝试下用证书来实现

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-07-31 10:24

@bird man: 首先明白一点,你的 .pfx 证书(准确的说是私钥)不能交给那 3 个允许接入的系统,这个你能明白吗?

支持(0) 反对(1) Launcher | 园豆:45045 (高人七级) | 2015-07-31 10:26

@Launcher: 能不能提供证书这方面的资料我再看看吧,我查到的资料都寥寥无几,谢谢了

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-07-31 10:28

@bird man: 你知道你学习的方向都搞错了吗?你需要学习的知识是“信息安全”,而证书只是其中的一个组件。我还是推荐你了解下 PKI :https://en.wikipedia.org/wiki/Public_key_infrastructure。这里面会告诉你证书是如何被应用的,以及能够保证的安全级别。

支持(0) 反对(1) Launcher | 园豆:45045 (高人七级) | 2015-07-31 10:31
0

调用证书方法,你看下面链接里是不是你要的:

http://www.cnblogs.com/cookiebin/p/4688608.html

objRequest.Method = "POST";
objRequest.ContentLength = buffer.Length;
objRequest.ContentType = "text/xml";//提交xml 
objRequest.ClientCertificates.Add(cert);   //http请求内加入证书
收获园豆:10
文__武 | 园豆:203 (菜鸟二级) | 2015-07-30 10:58

非常感谢你的回复,但是你提供的页面里面的验证其实是单方面的验证,也可能是我自己的理解不对吧,如果其他人使用自己生产的证书那岂不是也能验证过了,网上也很少有这方面的资料

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-07-30 11:05

@bird man: 证书需要先在服务器上安装,有密码保护的,就算别人拿到你证书,也没用……

支持(0) 反对(0) 文__武 | 园豆:203 (菜鸟二级) | 2015-07-31 09:51
0

楼主现在搞清楚了吗,我这边现在也有个双向认证的问题

zklve2 | 园豆:3 (初学一级) | 2017-03-22 15:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册