网站不能访问是SSL证书到期了?

jackxiang 2016-2-21 11:58 | |
1. 现象
放假期间收到zabbix报警,提示主站访问不了,报502。

2.排查思路及过程
因为是过年休息,放假前又没有更新,基本可以排除是更新和配置导致的问题。ssh连上服务器发现服务器连接和资源都没问题。这是一套lnamp架构的网站,就是nginx反向代理到Apache,所以考虑是Apache的问题,于是重启httpd服务。

重启httpd服务的时候启动失败,没有看到错误,所以去查看日志文件,看到如下报错:
tail -200 /var/log/httpd/error_log

[TIME 2016] [error] SSL Library Error: -8181 Certificate has expired
[TIME 2016] [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’到nss.conf服务器就可以启动,就是不验证证书过期时间。

Apache是用https需要mod_nss的模块支持,我的理解就是使用https需要安装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.

我的解决方法是重新生成新的证书
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
Certificate:
Data:
    Version: 3 (0x2)
    Serial Number: 3 (0x3)
    Signature Algorithm: PKCS #1 SHA-1 With RSA Encryption
    Issuer: "CN=Certificate Shack,O=example.com,C=US"
    Validity:
        Not Before: Mon Feb 15 02:05:10 2016
        Not After : Sat Feb 15 02:05:10 2020
现在可以看到证书的有效期是4年,新生成的证书到2020年过期。httpd服务可以正常启动。

启动httpd服务后发现首页还是不能访问,可以确认服务都正常启动配置没有问题。继续查看httpd的错误日志发现了新的报错:
[TIME 2016] [error] SSL Library Error: -8038 SEC\_ERROR\_NOT\_INITIALIZED  
[TIME 2016] [error] NSS_Initialize failed. Certificate database: /etc/httpd/alias.

百度了下发现是权限问题,重新授下权搞定。
chown root.apache /etc/httpd/alias/*.db
chmod 0640 /etc/httpd/alias/*.db

摘自解决一次由于SSL证书到期导致的网站不能访问的问题(Nginx,php,Apache):http://branguo.blog.51cto.com/9768383/1742157

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/8522/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]