我正在尝试在 jboss 服务器前面设置 httpd,并使用 x.509 证书进行客户端身份验证。我已关注本教程使用 openssl 创建我自己的 CA、服务器和客户端证书,并且成功了。现在我尝试使用 ejbca 工具而不是 openssl 生成证书,但失败了。我生成的证书配置不正确,因为当我尝试使用它们时,我收到 apache 和 jboss 之间的 ssl 握手错误,并且在 apache 日志中我可以看到
[Mon Jan 07 14:51:28 2013] [debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 read server hello A
[Mon Jan 07 14:51:28 2013] [debug] ssl_engine_kernel.c(1321): [client 10.55.160.194] Certificate Verification: depth: 2, subject: /CN=DEXXISCA/O=DEXXIS/C=FR, issuer: /CN=DEXXISCA/O=DEXXIS/C=FR
[Mon Jan 07 14:51:28 2013] [debug] ssl_engine_kernel.c(1321): [client 10.55.160.194] Certificate Verification: depth: 1, subject: /CN=DEXXIS-RND-CA/O=DEXXIS/C=FR, issuer: /CN=DEXXISCA/O=DEXXIS/C=FR
[Mon Jan 07 14:51:28 2013] [debug] ssl_engine_kernel.c(1321): [client 10.55.160.194] Certificate Verification: depth: 0, subject: /CN=centralbase/O=DEXXIS/C=FR, issuer: /CN=DEXXIS-RND-CA/O=DEXXIS/C=FR
[Mon Jan 07 14:51:28 2013] [debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 read server certificate A
[Mon Jan 07 14:51:28 2013] [debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 read server key exchange A
[Mon Jan 07 14:51:28 2013] [debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 read server certificate request A
[Mon Jan 07 14:51:28 2013] [debug] ssl_engine_kernel.c(1874): OpenSSL: Loop: SSLv3 read server done A
[Mon Jan 07 14:51:28 2013] [debug] ssl_engine_kernel.c(1660): Proxy client certificate callback: (centralbase:443) entered
[Mon Jan 07 14:51:28 2013] [debug] ssl_engine_kernel.c(1705): Proxy client certificate callback: (centralbase:443) no client certificate found!?
有人知道我需要在 ejbca 中配置什么才能获得允许我在 apache 和 jboss 之间建立 ssl 的证书吗(我正在使用 mod_proxy_http)?
答案1
好的,我解决了这个问题。看来 ejbca 生成的 jks 文件没有包含所有 CA 证书(只有根 CA)——这就是为什么使用 subCA 时它不起作用的原因。修复服务器 jks 文件后,一切正常。