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的证书。但为什么会这样呢?
答案 0 :(得分:0)
这取决于为验证设置的depth
。
从手册页
当前上下文允许的证书链验证的最大深度。此外,深度的默认值为9
。