我在 Windows 8.1 上使用 HTTP::Daemon::SSL 在 Perl 中创建了一个安全服务器 它适用于 Chrome 和 IE。它在 Firefox 下失败——ISSUER UNKNOWN。 我可以将发行者的链证书附加到 SSL_cert_file,然后 Firefox 就可以连接了。 我注意到当在 Windows 上用作安全服务器 Apache 或在 Raspberry Pi 上使用 Python 时,如果 Firefox 没有附加到 SSL_cert_file 的发行者链证书,则没有问题。 有什么方法可以告诉 Perl 的 HTTP::Daemon::SSL 获取并提供所需的链证书,而无需手动将它们添加到 SSL_cert_file?
最佳答案
没有内置方法可以让 HTTP::Daemon::SSL 自动获取丢失的证书。此外,您认为这种事情是用 Apache 或 Python 完成的观察是错误的。通常需要正确配置服务器以发送必要的证书。
一些浏览器可以解决错误配置的服务器,有时这些解决方法只在特定情况下有效。例如,Firefox 将缓存它看到的中间证书,并在以后使用这些证书来填充其他连接中丢失的链证书。但是,如果 Firefox 之前没有看到中间证书,这将失败,这可以很容易地使用新创建的配置文件进行尝试。您在 Apache 和 Python 中看到的情况很可能是使用已缓存的证书。
某些浏览器还可以使用证书的授权信息访问扩展中的 CA Issuers 属性来下载丢失的证书。我认为 Chrome 可以做到这一点。但这当然会影响页面的加载时间,因为需要先从其他服务器检索丢失的证书。
关于perl - HTTP::Daemon::SSL 自动获取并提供中间证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53215350/