前言:
而今看官们对“apache权限问题不能访问”大约比较注重,各位老铁们都需要了解一些“apache权限问题不能访问”的相关资讯。那么小编同时在网上汇集了一些有关“apache权限问题不能访问””的相关资讯,希望我们能喜欢,兄弟们一起来了解一下吧!问题:
在运行的Apache(HTTPD) 服务突然无法启动。没有修改任何的配置文件,类似的问题,首先排除的是系统和服务日志,messages 和httpd下面的error.log都没发现报错信息。在httpd 服务中加入-x 排错标记,发现是httpd 执行失败,怀疑与Apache 上额外的模块有关。把/etc/httpd/conf.d中的文件都移走,HTTPD服务可正常启动。逐一排除,发现问题是nss.conf 配置导致的。
运行:从一个终端运行tail -f /var/log/httpd/error_log 检测httpd启动日志记录,另一个终端运行server httpd start
从报错错误来看是证书过期了。
一、问题分析
上述日志中已经提示,可加入NSSEnforceValidCerts off 禁止校验证书的参数来避免该问题。经确认,这是可行的。
先来看看mod_nss 模块是干什么用的?
# rpm -qi mod_nss
The mod_nss module provides strong cryptography for the Apache Web server via the Secure Sockets Layer (SSL) and Transport Layer Security (TLS) protocols using the Network Security Services (NSS) security library.
那证书的有效时间是多少呢?(4年)
这是在安装mod_nss 包时生成的:
由于这台机器部署的时间很早,证书在2018年9月3日到期了。但之前没有重启HTTPD服务,没发现问题。而在最近重启机器时,故障才显现出来。
二、解决问题
既然原因已知道,解决就很简单了,方法也很多:
1. 如果不需要用到mod_nss 模块的,那直接把/etc/httpd/conf.d/nss.conf 文件改名或删掉;
2. 不验证证书过期时间的,那就在nss.conf 中加入NSSEnforceValidCerts off 配置即可;
3. 最佳的方式,是重新生成新的证书;
(生成新证书前,务必先删除旧证书数据库文件)
#chmod 750 *.db(因为是在root下面操作的,生成的是权限是root权限)
#chown apache.apache /etc/httpd/alias/*.db
4、重启httpd服务