解决一次由于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
时间: 2024-07-31 13:23:29

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

使用python检查SSL证书到期情况

使用python检查SSL证书到期情况 结合邮件告警和页面展示,再多的域名证书到期情况即可立马知道 代码示例: # coding: utf-8 # 查询域名证书到期情况 import re import time import subprocess from datetime import datetime from io import StringIO def main(domain): f = StringIO() comm = f"curl -Ivs https://{domain} --

修改DNS域名转发器解决IP地址解析错误导致的网站不能访问

修改DNS域名转发器解决IP地址解析错误导致的网站不能访问 首先谢谢同事林路的指导,才能顺利解决问题 打开网站,访问一个域名,DNS解析到错误的IP地址,那么将不能正确访问该网站 1.使用8.8.8.8(google 公用dns定位本地dns解析和google解析),这里是zh.wikipedia.org ping zh.wikipedia.org     159.106.121.75(这个是很多dns异常解析的地址) nslookup -qt zh.wikipedia.org 8.8.8.8

八大免费SSL证书-给你的网站免费添加Https安全加密

评论? https://www.freehao123.com/top-8-free-ssl-cert/ 文章目录 Let's Encrypt StartSSL SSL CloudFlare SSL Wosign沃通SSL 腾讯云DV SSL 免费SSL总结 SSL证书,用于加密HTTP协议,也就是HTTPS.随着淘宝.百度等网站纷纷实现全站Https加密访问,搜索引擎对于Https更加友好,加上互联网上越来越多的人重视隐私安全,站长们给网站添加SSL证书似乎成为了一种趋势. 给自己的网站添加SS

zabbix监控ssl证书到期时间

公司因有一个域名过期导致线上业务受到影响,因此老大要求把公司所有的证书纳入到zabbix监控中!下面贴出配置过程,供大家参考!不足支持欢迎指教监控脚本 cat ssl_check.sh #!/bin/bash #20181219 #获取ssl证书的过期时间 #menghao #获取证书的有效时间 time=$(echo | openssl s_client -connect $1:443 2>/dev/null | openssl x509 -noout -dates |awk -F'=' 'N

免费申请SSL证书 为您的网站加锁

5个多月前,整个互联网都被“Heartbleed”这个OpenSSL 软件的安全漏洞所震惊.事后,大家都在疑惑,本来采用SSL证书是为了数据传输的安全性,是为了更安全,可是结果呢? 不过,这个问题早已经被解决了,受影响的用户更新OpenSSL软件即可:请千万不要听信有些砖家的挖坑建议:不使用https,就没有问题了.如果不使用的话,那就不只是黑客能窃取数据,而是所有人都可以非常容易地窃取. SSL证书的作用 (1)网站身份实名认证.验证域名所有权和网站所有权,并对网站服务器真实身份进行国际验证,

免费SSL证书 之Let’s Encrypt申请与部署(Windows Nginx)

我着着皇帝的新衣,但是你看不见    有一颗愿意等待的心,说明你对未来充满希望.有一颗充满希望的心,那么等待又算什么.人就是在等待与希望中度过,我们永远要对未来充满信心! 读在最前面: 1.本文案例为SSL证书申请,部署环境为Winodws Nginx 2.Let's Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,由Mozilla.思科.Akamai.IdenTrust和EFF等组织发起,靠谱! 3.Let's Encrypt安装部署简单.方便,目前Cpanel.On

使用express vpn导致国内网站无法访问的问题

一直在付费使用express vpn,网速很快. 但是最近发现一个问题,使用express vpnFQ之后,国外的网站访问正常,但是国内的网站却无法访问. 我的使用环境:win 10, 使用express vpn dns, expess vpn auto connect. 为了找到原因,在express vpn连接上的条件下,打开cmd窗口,依次ping baidu.com和163.com,结果为找不到域名对应的IP地址. 然后我再关闭express vpn连接,重新ping,发现IP地址解析正

Nginx反代,后端一个IP绑定多个SSL证书,导致连接失败之解决方法:HTTPS和SNI扩展

默认:SSL协议进行握手协商进行连接的时候,默认是不会发送主机名的,也就是是以IP的形式来进行https连接握手协商的,这就导致一个问题,当一台服务器上有多个虚拟主机使用同一个IP的时候, Nginx进行反代就会报错! SNI(Server Name Indication):就是为了解决一个服务器,同一个IP,使用多个域名证书的情况,也就是使用SSL连接服务器的时候,先发送访问的站点域名,这样服务器就会根据域名返回一个合适的证书. Nginx开启SNI: proxy_ssl_server_nam

解决Kubernetes Dashboard由于自身证书问题导致一些浏览器不能打开的问题

正常安装部署完Kubernetes Dashboard后,通过某些浏览器却不能访问(比如Chrome浏览器),通常是由于部署Kubernetes Dashboard时生成的证书日期有问题,解决办法,可以通过自签证书的形式解决. 基于之前的测试部署环境 IP地址 主机名 系统 内核版本 CPU 内存 192.168.100.6 master01.cluster.k8 CentOS 7.6 5.2.6 4c 4G 192.168.100.7 node01.cluster.k8 CentOS 7.6