统信UOS上HTTPS网站浏览器报NET::ERR_CERT_AUTHORITY_INVALID,根本原因是系统CA库未同步至浏览器NSS证书库;需将中间证书导入/usr/share/ca-certificates并运行dpkg-reconfigure,再用certutil注入当前用户~/.pki/nssdb,最后重启所有浏览器进程。

在统信UOS上完成SSL证书配置却仍无法通过浏览器安全访问HTTPS网站,说明服务端监听和证书路径虽已设置,但系统级信任链与浏览器沙箱环境尚未打通。这会导致curl -v显示证书有效、Nginx -t校验通过,而Chrome/Firefox/深度浏览器全部报“NET::ERR_CERT_AUTHORITY_INVALID”。
准备证书文件并设置严格权限
把CA签发的证书.crt(或.pem)、私钥.key、中间证书.ca-bundle三个文件统一存放到系统标准路径下:【/etc/ssl/certs/your-domain.crt】、【/etc/ssl/private/your-domain.key】、【/etc/ssl/certs/intermediate.crt】。
私钥文件必须设为仅root可读:sudo chmod 600 /etc/ssl/private/your-domain.key。若权限为644,Nginx启动时会拒绝加载并报错“SSL error: unable to load private key”,且该错误不会出现在systemctl status输出中,只藏在journalctl -u nginx日志里。
合并主证书与中间证书成完整链:cat /etc/ssl/certs/your-domain.crt /etc/ssl/certs/intermediate.crt | sudo tee /etc/ssl/certs/your-domain-fullchain.crt。
配置Nginx启用HTTPS监听与重定向
方法一:修改默认站点配置
执行sudo nano /etc/nginx/sites-enabled/default,在server块中添加以下内容:
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /etc/ssl/certs/your-domain-fullchain.crt;
ssl_certificate_key /etc/ssl/private/your-domain.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
}
再新增一个80端口server块强制跳转:
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}
方法二:启用独立conf文件(推荐)
创建sudo nano /etc/nginx/conf.d/https-your-domain.conf,直接写入上述两个server块,避免污染default配置。这样后续禁用HTTPS只需删文件+重载,不破坏基础结构。
验证并加载系统级CA信任库
第一步:将根证书与中间证书导入系统证书库
执行sudo cp /etc/ssl/certs/intermediate.crt /usr/share/ca-certificates/ && sudo dpkg-reconfigure ca-certificates,空格勾选新证书后回车确认。此步使curl、wget、apt等命令行工具信任该证书链。
第二步:手动更新NSS数据库(浏览器必需)
统信UOS桌面版浏览器(深度浏览器、Chrome、Firefox)使用NSS cert9.db存储信任证书,不自动同步系统CA库。需运行以下命令将证书注入:
certutil -d sql:/home/$USER/.pki/nssdb -A -t "CT,," -n "Your-Intermediate-CA" -i /etc/ssl/certs/intermediate.crt
certutil -d sql:/home/$USER/.pki/nssdb -A -t "C,," -n "Your-RooT-CA" -i /etc/ssl/certs/root.crt
注意:若提示certutil未找到,请先安装sudo apt install libnss3-tools -y。该操作必须以实际登录用户身份执行,不可用sudo切换用户,否则证书会写入root的NSS库而非当前桌面用户的库。
第三步:重启所有已打开的浏览器进程,包括后台残留的chrome --type=zygote进程,否则新证书不会生效。
开放防火墙并重载服务
统信UOS默认使用firewalld,运行以下两条命令:
sudo firewall-cmd --add-port=443/tcp --permanent
sudo firewall-cmd --reload
测试Nginx配置语法:sudo nginx -t。若提示“test is successful”,执行sudo systemctl reload nginx。此时服务已监听443端口,但浏览器仍可能报错——请立即进入上一步完成NSS证书注入,这是90%用户卡住的最后一环。


















