在同行验证期间发送的两个证书为什么?

时间:2011-04-27 04:10:24

标签: network-programming pyopenssl

def cert_check(conn,cert,errnum,depth,ok):
    print 'Got cert',cert.get_subject()
    return ok

服务器:

ctx = SSL.context(SSL.TLSv1_METHOD)
ctx.set_verify(SSL.VERIFY_PEER,verify_cb)
ctx.use_private_key_file('server.key')
ctx.use_certificate_file('server.crt')
ctx.load_verify_locations('ca.crt')

客户端:

ctx = SSL.context(SSL.TLSv1_METHOD)
ctx.set_verify(SSL.VERIFY_PEER,verify_cb)
ctx.use_private_key_file('client.key')
ctx.use_certificate_file('client.crt')
ctx.load_verify_locations('ca.crt')

如何在客户端和服务器端获得两个证书。一个没有CommonName,一个具有正确的CommonName = myownserver.com/myownclient.com

所有上述文件只有一个密钥/证书。 另外,我猜测第一个打印的证书是ca.crt,因为它是唯一没有任何CommonName的证书。但为什么会这样呢?

1 个答案:

答案 0 :(得分:0)

这取决于为验证设置的depth

从手册页 当前上下文允许的证书链验证的最大深度。此外,深度的默认值为9