SSL 库错误:-8181 证书已过期

SSL 库错误:-8181 证书已过期

之后yum update,启动 apache 时出现错误,在/var/log/httpd/error_log

[notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[error] SSL Library Error: -8181 Certificate has expired
[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运行。我该如何修复错误?

答案1

似乎mod_nss安装时就创建了一个证书。

此证书已过期,导致无法重新启动httpd(Apache)。

你真的用吗mod_nss

如果您不使用,mod_nss那么最好的办法就是卸载该软件包。

不过你还有一些其他选择:

  • 删除(这将导致nss.conf无法加载)。/etc/httpd/conf.dmod_nss

  • 卸载/重新安装您的 nss rpm 模块。重新安装后将生成一个新证书,您的问题将在几年内消失:

    rpm -e mod_nss
    rm /etc/httpd/alias/*
    yum install mod_nss
    service httpd restart
    

答案2

对于任何正在阅读本文的人来说,您不需要删除 mod_nss。您只需重新颁发证书即可:

  • 备份当前别名文件夹
    mv /etc/httpd/别名 /etc/httpd/alias_2023_10_23

  • 创建新的别名文件夹
    mkdir /etc/httpd/别名

  • 生成新证书,当要求输入密码时按回车键(无密码)
    gencert /etc/httpd/别名/

  • 验证新证书是否有效
    certutil -d /etc/httpd/alias -L -n 服务器证书

  • 更改以下文件的组所有权:

chown root:apache /etc/httpd/alias/secmod.db 
chown root:apache /etc/httpd/alias/key3.db
chown root:apache /etc/httpd/alias/cert8.db
ln -s /usr/lib64/libnssckbi.so libnssckbi.so
  • 更改文件权限
chmod 640 /etc/httpd/alias/secmod.db
chmod 640 /etc/httpd/alias/key3.db
chmod 640 /etc/httpd/alias/cert8.db
  • 重启 Apache
    systemctl 启动 httpd

答案3

Server-Cert过期,检查人:

certutil -d /etc/httpd/alias -L -n Server-Cert

目前,通过从 中mod_nss删除可以禁用。nss.conf/etc/httpd/conf.d/

答案4

dnf remove mod_nss
rm /etc/httpd/alias/*
dnf install mod_nss
systemctl restart httpd

重要的是在重新安装之前删除 /etc/httpd/alias/*

相关内容