在我的本地开发机(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的检查器中收到以下消息:“ SSL:无法加载CA证书文件/etc/pki/tls/certs/ca-bundle.crt”。
我的虚拟主机设置为捕获*: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的东西?两者结合?或者是其他东西?请提供有关如何解决问题的足够信息,或提供提供足够信息的链接。
最佳答案
我已经解决了我的问题,并准备发布以供参考,以防其他人遇到类似问题。我必须解决几个问题才能解决此问题。
PHP安装
我的/etc/apache2/httpd.conf
引用了我的默认osx php安装,而不是我的home 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 Cert Bundle文件
系统正在寻找
/etc/pki/tls/certs/ca-bundle.cert
,这是Linux上的标准路径,但不是osx上的标准路径。我们通过生成文件来解决这个问题。我使用
.keystore
生成了keytool
文件,并将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 CERTIFICATE
和END CERTIFICATE
内容。如果是这样,则其格式正确。最后,创建目录结构,移动证书使其像捆绑包一样(只是一堆相互附加的证书),然后重新启动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