假设A和B通信,B是一个网站步骤:
1. A--->B:  Hello,所支持的算法列表
2. B--->A:  确定算法,B的证书(包含B的公钥)
3. A--->B:  生成一些算法的随机值,并用B的公钥加密上述步骤应该大致没错吧
我想问的是,在第2步,B把自己的证书交给A,这个证书中的公钥是明文的,还是密文的?
也就是说A是否需要用根证书解密才能拿到B的公钥?

解决方案 »

  1.   

    B把自己的证书交给A,这个证书中的公钥是明文的,还是密文的?
    答:密文的,一般采用DES加密后的数据.
    流行的做法是,在数据流头部存放的是DES加密后的密钥数据.
    跟在其后的数据是实际包体,一般采用 RSA加密,你应该把头部的密钥数据用DES还原成明文,然后代入RSA算法解开包体
      

  2.   

    公钥人家看不看到无所谓,因为B那有密钥不被人家看到就OK,他是不对称加密.在交换动态对称密码时是用不对称形式加密,所以是安全的
      

  3.   

    感谢楼上的回答,我现在基本确定证书中B的公钥是明文的(通过抓包可以看到)现在的问题是:
    A拿到B的证书后,怎么确认这个证书是不是伪造的?资料上说是通过根证书,B的证书是经过CA签名的,这个“签名”的具体过程是怎样的?我的理解是这个所谓“签名”就是指用CA的私钥对证书加密,然后通信时A拿到B的证书后,用根证书中CA的公钥去解密,如果能够解开,就说明证书是真的。那么这样B的证书就应该是加密的呀,为什么我看到的B的公钥是明文的呢,难道签名是部分加密?
      

  4.   

    A拿到B的证书后,怎么确认这个证书是不是伪造的?
    ------------------------------------------
    A在建立连接之前,先安装一个B的CA根证书,就可以了。这是A端单向认证
      

  5.   

    谢谢各位,我已经找到答案了
    证书中的公钥是明文的,签名是对摘要(MD5 or SHA)进行签名