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

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

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

假期收到zabbix的警报,提醒不能浏览域名,向502举报。


2.清查思路及全过程

因为放假前有新年休息,没有升级,可以清地基,这是升级装备带来的问题。连接到网络服务器的Ssh发现服务器连接和资源没有问题。是lnamp架构的一组URL,也就是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.

可以看到证书已经过期,得到一个解决方案,就是在nss.conf网络服务器上添加'NSSENFORCEVALIDCERTSOFF'来启动,也就是不验证证书过期时间。


Apache必须对https使用mod_nss的控制模块。我的理解是https必须安装mod_nss。这里有一个官方网站显示:

mod_nss模块使用网络安全服务(NSS) 安全库,通过安全套接字层(SSL)和传输层 安全(TLS)协议为ApacheWeb 服务器提供强大的加密功能。


我的解决办法是重新组建一个新的证书。

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

现在可以看到证书有效期为四年,新组建的证书将于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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/778872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存