Estou configurando o OpenVPN de servidor para servidor com uma infra-estrutura PKI e não consigo fazê-lo funcionar. Eu suspeito que seja algo na cadeia de certificados, mas não sei explicar como. Eu tenho uma autoridade de certificação raiz offline e uma hierarquia de certificados. As CAs são gerenciadas externamente por um produto chamado EJBCA. Pictorialmente a cadeia se parece com isso (com nomes alterados):
RootCA -> OnlineSubCA -> SubCA1 -> VPNCA
Eu assinei um certificado de servidor e cliente com o CA VPNCA e tenho a cadeia de certificados nesses sistemas. Enquanto depurava o OpenVPN, tentei usar "openssl s_server" e s_client ", levando-me a acreditar que é a cadeia CA. Especificamente no servidor:
openssl s_server -cert server.cert -key server.key -CAfile chained.pem -verify 5
e no cliente
openssl s_client -cert client.cert -key client.key -CAfile chained.pem -verify 5
o servidor retrocede, entre outras coisas:
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 = [email protected]
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 = [email protected]
verify return:1
e eu estou em uma perda completa para explicar como ou por que este é o caso. O OpenVPN também falha com um erro semelhante, do cliente:
VERIFY ERROR: depth=3, error=invalid CA certificate: /C=CA/O=My_Company/CN=OnlineSubCA
Estou executando o OpenVPN 2.2.1 e OpenSSL 1.0.1 no Ubuntu 12.04. O tempo está sincronizado em ambos.
Não sei como proceder mais. Qualquer idéia / sugestão seria muito apreciada.