SSL:无法加载 CA 证书文件 /etc/pki/tls/certs/ca-bundle.crt

Posted

技术标签:

【中文标题】SSL:无法加载 CA 证书文件 /etc/pki/tls/certs/ca-bundle.crt【英文标题】:SSL: can't load CA certificate file /etc/pki/tls/certs/ca-bundle.crt 【发布时间】:2016-07-26 02:11:15 【问题描述】:

在我的本地开发机器 (osx) 上,我使用 jboss 在 8443 上为 Web 服务提供服务器。当我直接点击 url 时,我得到了我正在寻找的 json 响应。我们工作的架构包括一个中间层(apache/php),它执行身份验证和路由。如果事情经过身份验证,那么它将请求转发到后端。

当我在端口 80 上使用 apache 和在 8081 上使用 jboss(使用 http)时。一切对我来说都很好。现在我正在尝试使用 8443,但一切都无法正常工作。

我最近通过 https (8443) 而不是 http (8081) 将后端更改为服务器。我可以直接在 https 8443 上点击请求并获得 json 响应。当我点击 apache 并进行身份验证然后尝试重定向到 https 8443 时,我从 chrome 的检查员那里收到以下消息:“”。

我的虚拟主机设置为捕获 *:80 请求。我想我可能需要设置虚拟主机来接受 443 请求或安装 ca-certificates 就像在 How do I deal with certificates using cURL while trying to access an HTTPS url? 中谈到的那样。我正在寻找是否有人知道正确的方向应该是什么。

当我查看文件系统时,文件/etc/pki/tls/certs/ca-bundle.crt 不存在。当我向中间层发出请求时,我看到请求命中/var/log/apache2/access_log,而/var/log/apache2/error_log 中没有出现任何内容。

解决这个问题需要什么?捕获对 443 的请求是虚拟主机的配置吗?是在链接中安装 ca-cert 的东西吗?两者的结合?或者是其他东西?请提供足够的信息来说明如何解决它,或提供提供足够信息的链接。

【问题讨论】:

【参考方案1】:

我解决了我的问题,并正在为文档目的写一个帖子,以防其他人有类似的问题。我必须解决几个问题才能解决此问题。

PHP 安装

我的/etc/apache2/httpd.conf 引用了我的默认 osx php 安装,而不是我的家庭 brew 安装的 php。解决方案是编辑 httpd.conf 并将其指向正确的安装。

#LoadModule php5_module /usr/local/opt/php53/libexec/apache2/libphp5.so
LoadModule php5_module /usr/local/Cellar/php53/5.3.29_4/libexec/apache2/libphp5.so

您可以通过以下命令使用 home brew 创建类似的 php 设置:

brew install homebrew/php/php53
brew install homebrew/php/php53-igbinary --build-from-source
brew install homebrew/php/php53-intl
brew install homebrew/php/php53-mcrypt
brew install homebrew/php/php53-memcached
brew install homebrew/php/php53-mongo
brew install homebrew/php/php53-xdebug

创建 CA 证书捆绑文件

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

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

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 内容。如果是这样,它的格式是正确的。

最后,创建目录结构,移动 cert 使其像 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:无法加载 CA 证书文件 /etc/pki/tls/certs/ca-bundle.crt的主要内容,如果未能解决你的问题,请参考以下文章

自制SSL证书

为配置SSL,自制CA证书

CA搭建与证书申请

CA搭建与证书申请

私有CA的创建和证书的申请

建立私有CA实现证书申请版本