Yosemite升级后,Apache不再为SSL服务

Mic*_*ael 1 apache ssl osx-yosemite

升级到优胜美地后,我无法再使用我的网络服务器了.它被设置为接受端口443上的SSL连接,但现在netstat -a -n说它甚至没有监听该端口.我看了看,/etc/apache2注意到extra/已经移动到original/extra所以我把它移回去了.还有一份httpd.confin 的副本,original/但时间戳和大小没有变化,diff显示它与我原来的相同httpd.conf.唯一/etc/apache2具有新时间戳的其他文件users/但该目录中的任何内容都未更改.

我的所有证书文件ssl/仍具有正确的权限.我没有看到任何内容/var/log/apache2/error_log(除了正常的启动消息).实际上,即使我尝试在端口80上访问Web服务器,我也没有任何内容,error_log或者access_log即使我意外403 Forbidden地访问了我尝试访问的每个页面.

我已经阅读了Yosemite将Apache从2.2更新到2.4的问题,但是我的Web服务器似乎甚至无法解决由此引起的任何错误.在任何情况下,我都尝试过这里的解决方案,但我的httpd.conf文件不包含任何OrderAllow行(也没有extra/ 中的任何文件)所以我无法尝试那里建议的答案.

sun*_*sen 6

好的,这是一个老话题,但这是一个答案.

我相信你必须在httpd.conf中取消注释几行.

跑:

sudo vi /etc/apache2/httpd.conf
Run Code Online (Sandbox Code Playgroud)

取消注释以下行:

#LoadModule ssl_module libexec/apache2/mod_ssl.so

#Include /private/etc/apache2/extra/httpd-ssl.conf
Run Code Online (Sandbox Code Playgroud)

一个简单的技巧是使用VIM搜索配置文件,以从那里查找与SSL和调试相关的行.

在VIM中,以下将找到ssl的所有实例...按n转到下一个找到的实例:

?ssl
Run Code Online (Sandbox Code Playgroud)

进行更改后,使用以下命令测试配置:

sudo apachectl configtest
Run Code Online (Sandbox Code Playgroud)

如果一切顺利,请运行:

sudo apachectl restart
Run Code Online (Sandbox Code Playgroud)

如果您收到以下错误:

SSLCertificateFile:文件'/private/etc/apache2/server.crt'不存在或为空

创建默认的自签名SSL证书:

cd /private/etc/apache2

openssl req -new -x509 -days 365 -nodes -out server.crt -keyout server.key
Run Code Online (Sandbox Code Playgroud)

当系统询问您的公共名称时,请输入localhost.

然后运行configtest,如果一切正常,重启.