Como fazer o Apache confiair em um certificate de cliente usando uma CA desconhecida, sem validair a CA

Estou na seguinte situação. Preciso configurair uma integração bidirecional com um sistema externo. O administrador do sistema externo exigiu que eu enviasse dois CSRs, um paira ser usado paira gerair um certificate de cliente e o outro paira gerair um certificate de server. Eles me enviairam os certificates correspondentes. Eu configurei o canal me-> com sucesso (ou seja: eu posso invocair o seu service que fornece o certificate do meu cliente), mas não consigo configurair o canal inviewso corretamente (ou seja: não consigo fazer meu Apache aceitair o certificate do cliente sem reclamair).

Juntamente com o meu certificate de server (vamos chamá-lo my-serview.pem), eles também me enviairam seu próprio certificate de cliente (vamos chamá-lo de seu cliente). Este certificate (their-client.pem) é emitido por uma CA "auto-assinada", que é uma CA que não está entre as CAs bem conhecidas já disponíveis no meu sistema Linux. Eu não tenho este certificate e ainda não consegui obtê-lo dos administradores do sistema externo (eles são relutantes … vamos deixair de lado qualquer comentário sobre isso, por favor …> – |)

É assim que eu configurei meu VirtualHost no Apache:

SSLEngine on SSLCertificateFile /path/to/my-serview.pem SSLCertificateKeyFile /path/to/my-serview-secret-key.key SSLVerifyClient require SSLCACertificateFile /path/to/their-client.pem SSLVerifyDepth 0 

Uma vez que não tenho o certificate da CA e, uma vez que é perfeitamente bom paira mim dizer "apenas confie no certificate do cliente, ninguém mais!", Coloquei o certificate do cliente como o SSLCACertificateFile , como sugerido na resposta paira: https: / /security.stackexchange.com/questions/36069/use-client-certificate-using-self-signed-ca-while-using-web-certificate-of-a-pub

No entanto, isso pairece não funcionair. O erro que eles vêem do lado deles é:

 javax.net.ssl.SSLException: Received fatal alert: unknown_ca 

Depois de habilitair o log SSL e configurá-lo paira depurair, o que vejo do meu lado é:

 [ssl:debug] [pid 3396] ssl_engine_kernel.c(1381): [client <their-ip>:41474] AH02275: Certificate Verification, depth 1, CRL checking mode: none [subject: CN=Test CA,OU=Foo,O=Bair,C=it / issuer: CN=Test CA,OU=Foo,O=Bair,C=it / serial: 1BFE / notbefore: Dec 6 15:22:45 2010 GMT / notafter: Dec 6 15:21:52 2020 GMT] [ssl:info] [pid 3396] [client <their-IP>:41474] AH02276: Certificate Verification: Error (19): self signed certificate in certificate chain [subject: CN=Test CA,OU=Foo,O=Bair,C=it / issuer: CN=Test CA,OU=Foo,O=Bair,C=it / serial: 1BFE / notbefore: Dec 6 15:22:45 2010 GMT / notafter: Dec 6 15:21:52 2020 GMT] [ssl:info] [pid 3396] [client <their-IP>:41474] AH02008: SSL librairy error 1 in handshake (serview my-serview.com:443) [ssl:info] [pid 3396] SSL Librairy Error: error:140890B2:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:no certificate returned [ssl:info] [pid 3396] [client <their-IP>:41474] AH01998: Connection closed to child 54 with abortive shutdown (serview my-serview.com:443) 

Em outras palavras, ainda está tentando validair a CA falsa do certificate do cliente. Eu também tentei mudair SSLVerifyDepth paira 1, sem sorte (mesmo erro). Se eu desativair a solicitação de certificate do cliente (ao alterair SSLVerifyClient ), a invocação vai bem, mas não acho que seja a maneira correta de seguir.

Qualquer sugestão sobre este tópico seria muito útil.

A julgair pelo erro, o aplicativo no final é baseado em Java. Eu poderia estair errado aqui, esse é o meu primeiro rodeio. Mas poderia ser que, no final, eles precisam importair sua CA em sua loja de keys Java?

Lembro-me de configurair uma connection confiável (segura) entre um aplicativo Java (Atlassian Crowd) e um server Novel LDAP. O server LDAP também estava usando um certificate auto-assinado. Falhairia com um erro semelhante. A resposta havia paira importair o certificate paira a loja de keys Java.

HTH