Estoy configurando OpenVPN de servidor a servidor con una infraestructura PKI, y no puedo hacer que funcione. Sospecho que es algo en la cadena de certificados, pero no puedo explicar cómo. Tengo una CA raíz fuera de línea y una jerarquía de certificados. Las CA son administradas externamente por un producto llamado EJBCA. Pictóricamente, la cadena se ve así (con los nombres cambiados):
RootCA -> OnlineSubCA -> SubCA1 -> VPNCA
Firmé un certificado de servidor y cliente con CA VPNCA, y tengo la cadena de certificados en esos sistemas. Mientras depuraba OpenVPN intenté usar "openssl s_server" y s_client ", lo que me hizo creer que es la cadena CA. Específicamente en el servidor:
openssl s_server -cert server.cert -key server.key -CAfile chained.pem -verify 5
y en el cliente
openssl s_client -cert client.cert -key client.key -CAfile chained.pem -verify 5
el servidor escupe, entre otras cosas:
depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify error:num=24:invalid CA certificate
verify return:1
depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify error:num=26:unsupported certificate purpose
verify return:1
depth=4 C = CA, O = My Company, CN = RootCA, emailAddress = certs@mycompany.com
verify return:1
depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify return:1
depth=2 CN = SubCA1, O = My Company, C = CA
verify return:1
depth=1 CN = VPNCA
verify return:1
depth=0 C = CA, ST = , L = , O = My Company, OU = , CN = client1.mycompany.com, emailAddress = pki@mycompany.com
verify return:1
y estoy completamente perdido para explicar cómo o por qué este es el caso. OpenVPN también falla con un error similar, desde el cliente:
VERIFY ERROR: depth=3, error=invalid CA certificate: /C=CA/O=My_Company/CN=OnlineSubCA
Estoy ejecutando OpenVPN 2.2.1 y OpenSSL 1.0.1 en Ubuntu 12.04. El tiempo está sincronizado en ambos.
No sé cómo proceder más. Cualquier idea / sugerencia sería muy apreciada.