php - 如何让 Apache 接受由 Java 的 KeyTool 制作的自签名证书

标签 php macos apache symfony ssl

我的中间层正在使用 Apache/PHP/Symphony 进行身份验证和路由。请求在 http 上通过,然后如果请求验证发出请求的人被授权,则通过 https 调用后端 Web 服务。后端 Web 服务通过 https 使用自签名证书。我可以直接点击后端服务并通过 chrome inspector 查看我的证书信息。当我通过 url 直接向后端发出请求时,一切正常。当我尝试通过中间层时,我得到的响应是 504:

{"code":504,"message":"A network communication error has occurred","error":{"code":77,"message":"SSL: can\u0027t load CA certificate file \/etc\/pki\/tls\/certs\/ca-bundle.crt"}}

我生成的证书是为了:

/usr/local/jboss-eap-6.4/standalone/configuration/.keystore

使用命令:

keytool -genkey -keyalg RSA -alias jboss -keystore .keystore -storepass changeit -validity 9999 -keysize 2048

我还更新了我的 standalone.xml 以通过以下方式引用该文件:

<ssl name="ssl" key-alias="jboss" password="changeit" certificate-key-file="/usr/local/jboss-eap-6.4/standalone/configuration/.keystore" protocol="TLSv1" verify-client="false"/>

我的开发机器是 OSX。

看来 apache 或 symfony 正在寻找 /etc/pki/tls/certs/ca-bundle.cert 中的证书这是我的系统上不存在的文件。在 /etc/apache2/httpd.conf 中搜索“pki”没有结果。

如何设置 apache/symfony2信任这个证书,还是有不同的方式来更全面地信任这个证书?

最佳答案

创建 CA 证书捆绑文件

系统正在寻找 /etc/pki/tls/certs/ca-bundle.cert 这是 linux 上的标准路径,但不是 osx 上的。我们通过生成文件来解决这个问题。

我使用 keytool 生成了 .keystore 文件,并使用 jboss 作为我的别名。为了构建 ca bundle 文件,我们需要它是 pem 格式,所以我们需要将 -rfc 添加到我们的 export 语句中。以下是命令:

cd /usr/local/jboss-eap-6.4/standalone/configuration
keytool -export -alias jboss -file local-sbx.dev.yourcompany.com.crt -keystore .keystore -rfc

获得该文件后,您可以将其取出并验证文件中是否包含BEGIN CERTIFICATEEND CERTIFICATE 内容。如果是这样,它的格式是正确的。

最后,创建目录结构,移动证书使其像 bundle 一样工作(这只是一堆相互附加的证书),然后重新启动 apache:

mkdir -p /etc/pki/tls/certs/
sudo cp local-sbx.dev.yourcompany.com.crt /etc/pki/tls/certs/ca-bundle.crt
sudo apachectl restart

注意:这是SSL: can't load CA certificate file /etc/pki/tls/certs/ca-bundle.crt的子问题因此,如果您仍然遇到问题,您可能还需要更新您的 PHP 设置...说明在提供的链接中。

关于php - 如何让 Apache 接受由 Java 的 KeyTool 制作的自签名证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36455876/

相关文章:

macos - 哪个目录最适合保存日志?

ios - 通过没有 TLS 或类似协议(protocol)的套接字与 localhost 通信是否安全?

swift - 隐藏 NSOutlineView 中组行的显示/隐藏按钮

php - 错误 : Apache shutdown unexpectedly error message

php - LAMP max_connections、 sleep 进程、锁定进程、等待超时、内存不足

apache - 如何让 Apache gzip 压缩发挥作用?

PHP - 无法访问已选中的复选框值

php - 什么是 Kohana 3.2 中最小的完整分页示例?

php - 将 SQL 查询列传递到另一个 .php 页面

php - 没有 PHP artisan serve,Livewire 无法工作