解决一次由于SSL证书到期导致的网站不能访问的问题(Nginx,php,Apache)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决一次由于SSL证书到期导致的网站不能访问的问题(Nginx,php,Apache)相关的知识,希望对你有一定的参考价值。

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

本文出自 “Bran” 博客,请务必保留此出处http://branguo.blog.51cto.com/9768383/1742157

以上是关于解决一次由于SSL证书到期导致的网站不能访问的问题(Nginx,php,Apache)的主要内容,如果未能解决你的问题,请参考以下文章

如何检查网站SSL证书有没有到期?

美政府关门导致大量政府网站HTTPS证书到期无法访问

苹果手机ssl安全证书问题解决方法都有哪些呢?

https怎么获得证书,网站https访问证明弄?

配置Java SSL 访问网站证书

为啥更换ssl证书后http访问不了网站?