Я пытаюсь заставить работать равноправную аутентификацию с использованием сертификатов X509 / M2Crypto.SSL
Я создаю корневой CA (эмитент & subject = ca_hostC) на клиенте (hostC)
Я подписываю сертификат клиента локально с этим CA (эмитент: ca_hostC, субъект: hostC)
Я генерирую CSR на хосте, копирую егов hostC, подпишите его с помощью корневого CA из шага 1 и переместите ca_cert и подписанный сертификат в hostS.
Я создаю контекст:
import M2Crypto.SSL as SSL
ctx = SSL.Context('tlsv1')
ctx.load_cert('x.crt', 'private/x.key')
ctx.load_verify_locations(cafile='ca.crt')
ctx.set_verify ( SSL.verify_peer | SSL.verify_fail_if_no_peer_cert , 0, verify_callback)
Iconnect:
s = SSL.Connection(ctx)
s.connect(server_address)
, но на клиенте я получаю
ERROR: 20
unable to get local issuer certificate
, однако, когда я печатаю тему и издателя сертификата, полученного с сервера, я вижу правильную информацию.Кроме того, сертификат можно проверить из утилиты командной строки openssl.
Есть мысли ??