浏览器如何导入自签证书:一份可操作的完整指南

自签名证书能让 HTTPS 服务跑起来,但浏览器默认不信任它。笔者在访问自建的 fastOnto 服务时,就遇到了这个问题。本文整理从服务器导出证书到各平台导入的完整流程,帮助初学者少走弯路。

整个流程可以概括为三个阶段:服务器导出公钥证书、确认证书包含正确的 IP SAN、在客户端按平台导入并重启浏览器。
flowchart LR A"服务器:导出公钥证书\
fullchain.pem → .crt"
--> B"校验证书\
subject / SAN / SHA-256 指纹"
B --> C{"包含 IP SAN?"} C -- "否" --> D"停止导入\
检查证书生成配置"
C -- "是" --> E"安全传输 .crt 到客户端" E --> F"按平台导入证书" F --> G"彻底退出并重开浏览器" G --> H"访问 https://\[已脱敏IP:8025"]

01 | 先导出可导入的证书

关键原则:只导入公钥证书,不要导入 privkey.pem。注意:把自签名证书放入"受信任的根证书颁发机构"后,该证书在理论上可被用于签发任意站点,因此只应在你完全控制的客户端上操作。

在服务器上执行:

bash 复制代码
cd /home/alfred/projects/fastOnto

openssl x509 \
  -in .runtime/tls/fullchain.pem \
  -out .runtime/tls/fastonto-[已脱敏IP].crt

然后把 fastonto-[已脱敏IP].crt 安全传到需要访问 fastOnto 的客户端电脑。

导入前先确认证书包含 IP SAN:

bash 复制代码
openssl x509 \
  -in .runtime/tls/fastonto-[已脱敏IP].crt \
  -noout -subject -ext subjectAltName -fingerprint -sha256

输出中应看到 IP Address:[已脱敏IP]。

02 | Windows:Chrome / Edge

  1. 双击 .crt 文件;
  2. 选择"安装证书";
  3. 选择"本地计算机"(此步通常需要管理员权限,若选项不可用请以管理员身份运行安装程序);
  4. 选择"将所有的证书都放入下列存储";
  5. 选择"受信任的根证书颁发机构";
  6. 完成后彻底退出并重新打开 Chrome / Edge;
  7. 访问 https://[已脱敏IP]:8025。

03 | macOS:Chrome / Safari

  1. 双击 .crt;
  2. 在"钥匙串访问"中导入到"系统"钥匙串;
  3. 双击导入的证书;
  4. 展开"信任";
  5. 将"使用此证书时"设置为"始终信任";
  6. 输入 macOS 管理员密码;
  7. 彻底退出并重新打开浏览器。

04 | Firefox

Firefox 可能使用自己的证书库:

  1. 设置;
  2. 隐私与安全;
  3. 证书;
  4. 查看证书;
  5. "颁发机构";
  6. 导入 fastonto-[已脱敏IP].crt;
  7. 勾选"信任此 CA 用于标识网站"。

05 | Linux Chromium / Chrome

可优先从浏览器的"设置 → 隐私和安全 → 安全 → 管理证书 → 颁发机构"导入。

若界面没有可用入口,使用 NSS 用户证书库(需先安装 certutil,例如 Debian/Ubuntu 执行 sudo apt install libnss3-tools,RHEL 系执行 sudo dnf install nss-tools):

bash 复制代码
mkdir -p "$HOME/.pki/nssdb"

certutil -d "sql:$HOME/.pki/nssdb" -N --empty-password

certutil -d "sql:$HOME/.pki/nssdb" \
  -A \
  -n "fastOnto self-signed HTTPS" \
  -t "C,," \
  -i fastonto-[已脱敏IP].crt

然后彻底退出并重开浏览器。再次访问 https://[已脱敏IP]:8025,若地址栏不再提示证书不受信任,说明导入生效。

06 | 几点注意事项

  • 只应在你控制的客户端导入;
  • 不要传播或导入 .runtime/tls/privkey.pem;
  • 若重新生成服务器自签名证书,客户端需要重新导入;
  • 长期更推荐创建一个内部 CA,再由内部 CA 签发 fastOnto 服务证书,之后客户端只需信任一次内部 CA。

关注我,和AI一起成长~