设为首页 收藏本站
查看: 1601|回复: 0

[经验分享] apache服务器不能启动之nss

[复制链接]

尚未签到

发表于 2015-12-23 14:00:03 | 显示全部楼层 |阅读模式
一、故障现象:
1、用户反馈http的网页打不开了(确认不是客户端的问题);
2、服务器端ps aux|grep httpd 发现进程没有起来;
3、service httpd start 启动失败
4、service httpd status 提示“httpd已死,但pid文件存在”
5、httpd的error日志suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) 每执行一次启动就增加一条这样的错误日志
二、解决过程:
1、针对现象4
查看配置文件找到pid文件配置位置,删除pid文件,还是没有解决;
调整了pid文件的位置,也还是没解决。
看来不是这个原因。
2、针对现象5
# cd /etc/httpd/conf.d/    #进入配置文件目录
[iyunv@csit conf.d]$ grep NSSEngine *    #查找配置选项,并且知道在 nss.conf 这个文件中
nss.conf:NSSEngine on
[iyunv@csit conf.d]$ vi  nss.conf    #注释NSSEngine
#   SSL Engine Switch:
#   Enable/Disable SSL for this virtual host.
#NSSEngine on
[iyunv@csit httpd]# service httpd restart
Stopping httpd:    [  失败  ]
Starting httpd:[ 成功]
三、分析
nss模块有关
certutil -d /etc/httpd/alias -L -n Server-Cert可以查看nss中的certificate过期的时间,比如这个命令输出在某台机器上有如下的信息。(这个命令中的/etc/httpd/alias是nss.conf中这个值“NSSCertificateDatabase”的配置)
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 3 (0x3)
        Signature Algorithm: PKCS #1 MD5 With RSA Encryption
        Issuer: "CN=Certificate Shack,O=example.com,C=US"
        Validity:
            Not Before: Fri Dec 21 03:56:05 2007
            Not After : Wed Dec 21 03:56:05 2011
所以,当前时间是已经过期了的。通过修改nss.conf来解决的,或者也可以直接删除mod_nss,不是用这个安全方面的module即可。)
The mod_nss module provides strong cryptography for the Apache HTTP Server via the Secure Sockets Layer (SSL) and Transport Layer Security (TLS) protocols, using the Network Security Services (NSS) security library.
Network Security Services (NSS) is a set of libraries designed to support cross-platform development of security-enabled client and server applications. Applications built with NSS can support SSL v2 and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security standards.
进一步分析:原因,发现系统服务器的时间跟目前的时间不一致,北京时间是9点多,但是服务器时间是12点多了。导致过期。估计有两个办法可以解决:
1、停掉nss引擎,如上解决办法;
2、把服务器的时间同步好。nss证书重新生成
查看当前时间点的nss_error_log的报错信息
[Mon 06 04 09:18:42 2015] [error] Certificate not verified: 'Server-Cert'
[Mon06 04 09:18:42 2015] [error] SSL Library Error: -8181 Certificate has expired
[Mon 06 04 09:18:42 2015] [error] Unable to verify certificate 'Server-Cert'. Add "NSSEnforceValidCerts off" to nss.conf so the server can start until the problem can be resolved.
这里已经给出了解决方法:可加入NSSEnforceValidCerts off 禁止校验证书的参数来避免该问题,这也是一种方法,当然也可以重建校验证书!
重建证书解决办法:
rpm -qa mod_nss  查看命令,如果查看没有结果表示没有安装
[iyunv@WEBsvr alias]# certutil -d /etc/httpd/alias -L -n Server-Cert 查看nss安装时间
生成新证书前,务必先删除旧证书数据库文件
# cd /etc/httpd/alias
# rm -f *.db
# /usr/sbin/gencert /etc/httpd/alias > /etc/httpd/alias/install.log 2>&1
# certutil -d /etc/httpd/alias -L -n Server-Cert
或者不验证证书过期时间的,那就在nss.conf 中加入NSSEnforceValidCerts off配置即可;

四、小结

httpd启动不起来,不要慌了神。
首先擦看错误日志,分析错误原因。
配置文件在修改前一定要先备份。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-155289-1-1.html 上篇帖子: apache 目录访问验证 下篇帖子: Apache 日志分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表