最近在研究openssl,发现利用openssl可以生成一个证书,因为生成的证书中有一个签名,比如说是RSA的签名吧,那么OPENSSL是利用哪一个公钥进行签名的呢?一直想知道这个公钥是多少?注意,这里说的是OPENSSL用来解密签名的公钥而不是所生成证书中的公钥?谢谢
- 标 题:有知道openssl的进来帮帮忙
- 作 者:llsszr
- 时 间:2009-06-03 12:33
- 链 接:http://bbs.pediy.com/showthread.php?t=90608
最近在研究openssl,发现利用openssl可以生成一个证书,因为生成的证书中有一个签名,比如说是RSA的签名吧,那么OPENSSL是利用哪一个公钥进行签名的呢?一直想知道这个公钥是多少?注意,这里说的是OPENSSL用来解密签名的公钥而不是所生成证书中的公钥?谢谢
谢谢各位的热心帮助,按arab的说法,就是说CA自己给自己签名,用自己的密钥信息就可以了,就像IE浏览器里的 “受信任的根证书颁发机构”里面的那些证书都是自签名证书。所以用这些证书里面的公钥信息就能直接对签名进行解密,得到前面是一长串1fffffffffffffffffffffffffffff的数据。而我们要想获取一个证书机构的颁发的证书,也就是上面说的普通证书,那么证书里面的公钥就不能对签名进行解密操作,因为这时的公钥是用户自己的公钥,而CA的签名是用的自己的公钥进行签名的。是这个意思吧。
这个说法听起来有点乱了. 换个说法看看会不会好些:
1. CA根(CARoot)证书做为大家都信任的公证人的角色, 它的的可信度是有保证的, 所以它可以自签名(比如说VeriSign的).
2. 次级证书(可能是下级CA证书, 也可能是普通证书)要得到认证, 必须由上级(CARoot)为它签名, 证明这个证书是可信的.
3. 上级CA用私钥对次级证书签名, 其它人可以通过上级CA的公钥来验证次级证书的完整性和可信性.
4. 上级CA对次级证书的具体内容并不关心, 它只关心证书的整体的完整性.
5. 签名并不一定对要签名的内容进行加密, 它可以对要签名的内容做个Hash, 然后把Hash值用私钥加密. 验证时只要验证这个Hash值是否正确就可以了.
谢谢楼上的帮忙,这个问题我弄清楚了,又出了新的问题,就是我自己伪造了一个CA的自签名证书,再用这个证书给别的证书进行签名。打开CA的自签名证书,发现没有安装,是不可信任的,而且由这个CA证书签名的用户证书也是提示无法显示其有效性,于是我就将CA的自签名证书按装了,发现安装后CA 的自签名证书也变得信任了,由CA签名的用户证书也有效了。这是为什么呢?也就是说CA的自签名证书安装之后为什么会发生这样的变化?CA的证书安装到哪里去了呢?,我怎样在我的电脑里看已经安装了的证书呢?谢谢,困惑啊?
Windows自带了一些公认的ROOT CA证书签发机构, 比如说VeriSign的. 如果一个证书是被这些CA Root或下级签名的, 则该证书可信, 可直接安装(即加入可信证书列表中). 如果没有"公认"的签名, 则不会自动安装.
但是经过你手动安装后, Windows因为你(通过人工交互)认可了证书的可信性, 所以也把你安装的证书列入可信CA中, 相应的, 该CA签名的证书自然就可信了.
安装后的具体位置我不太清楚, 但可以在IE的选项的内容那个Tab里看到.