我有 3 台 Centos 7 机器。
我在第一台机器上安装了 FreeIPA 服务器。这充当我的网络中的证书颁发机构;这是我的 CA。
我有另一台机器安装了 FreeIPA 客户端。这台机器可以为第三台机器提供 Web 服务。它有一个由 CA 生成的证书。
第三台机器没有安装 freeipa,并在第二台机器上发出 https 请求。
我想使用 OCSP 装订。
/etc/httpd/conf.d/ssl.conf
因此我在我的第二台机器上添加了如下几行:
SSLUseStapling on
SSLStaplingCache shmcb:/run/httpd/sslcache(512000)
并重新启动httpd。
当我使用curl从第三台机器发出https请求时,它会出现OCSP 无响应发送。
所以我认为我的 CA(我第一台机器上的 Freeipa 服务器)配置得不好。
我尝试做出改变nss配置文件在 CA 上,我查看了
/etc/pki/pki-tomcat/ca/CS.cfg
但没有成功启用 ocsp 装订。我不知道。
我补充说,我已经在我的 IPA 服务器中检查过ca.ocsp=true在/var/lib/pki/pki-tomcat/ca/conf/CS.cfg
。
你能帮我吗?我将非常感激。
太感谢了。
编辑:
https 服务器的证书具有带有 ocsp 响应者 url 的权限信息访问扩展,并且该 url 是正确的。
防火墙已禁用。
openssl ocsp -issuer ca.cert -cert server.cert -text -url http://ipa-ca.mydomain.com/ca/ocsp
给出 ocsp 响应,但命令openssl s_client -connect myserver.mydomain.com:443 -tls1 -tlsextdebug -status
给出ocsp 响应:未发送响应。
我知道 ocsp 响应器没问题,但装订不起作用......
答案1
假设你做了openssl ocsp ...
测试从 myserver.mydomain.com
,那么看起来 myserver.mydomain.com 已连接到 OCSP 响应程序。
接下来要确定的是Apache HTTPS 服务器进程能够使用该连接吗? CentOS 7 默认启用 SELinux,并且对httpd
.通过 OCSP 装订,该httpd
进程需要能够与 OCSP 响应器建立传出 TCP 连接。为此,您需要执行以下操作:
setsebool -P httpd_can_network_connect 1
如果没有此设置,该httpd
进程将无法建立传出 TCP 连接:它只能响应传入连接。这肯定会阻止发出任何 OCSP 请求。
您还应该查看 HTTPS 服务器的日志。如果它记录错误消息,例如:
AH02217: ssl_stapling_init_cert: Can't retrieve issuer certificate!
那么问题是 HTTPS 服务器没有 OCSP 响应器可用的 CA 证书链,因此它无法验证从 OCSP 响应器收到的响应的真实性。要解决此问题,您需要使用 HTTPS服务器配置中的SSLCertificateFile
或指令向 HTTPS 服务器提供适当的 CA 证书。SSLCertificateChainFile
如果您使用SSLCertificateFile
,则只需将相关中间 CA 和根 CA 的 PEM 格式的证书附加到包含 HTTPS 服务器证书的文件中。