mkcert 本地开发 SSL 证书教程

mkcert 是一款零配置的本地 CA 工具,可以生成被本地系统信任的 SSL 证书。在开发环境中使用 HTTPS 时,传统的自签名证书会导致浏览器显示安全警告,而 mkcert 生成的证书会被自动信任,让本地开发体验与生产环境一致。本文将介绍如何在搬瓦工 VPS 和本地机器上使用 mkcert。

一、mkcert 的优势

  • 零配置:无需理解 CA 架构和 OpenSSL 命令。
  • 自动信任:自动将本地 CA 安装到系统信任存储。
  • 无安全警告:生成的证书被浏览器完全信任。
  • 支持多平台:Linux、macOS、Windows 均支持。
  • 支持多域名:一个证书可以包含多个域名和 IP。

注意:mkcert 仅适用于开发环境。生产环境请使用 acme.sh 申请正式的 SSL 证书。

二、安装 mkcert

2.1 Linux(搬瓦工 VPS)

# 安装依赖
apt update
apt install libnss3-tools -y

# 下载 mkcert
wget https://github.com/FiloSottile/mkcert/releases/latest/download/mkcert-linux-amd64
mv mkcert-linux-amd64 /usr/local/bin/mkcert
chmod +x /usr/local/bin/mkcert

2.2 macOS

brew install mkcert
brew install nss  # 如果使用 Firefox

2.3 Windows

choco install mkcert

2.4 验证安装

mkcert --version

三、初始化本地 CA

mkcert -install

此命令会创建一个本地 CA 根证书,并自动安装到系统的证书信任存储中。在 Linux 上会安装到 NSS 数据库,macOS 上安装到系统钥匙串。

# 查看 CA 根证书位置
mkcert -CAROOT

四、生成证书

4.1 单域名证书

mkcert localhost

会在当前目录生成 localhost.pemlocalhost-key.pem 两个文件。

4.2 多域名证书

mkcert localhost 127.0.0.1 ::1 myapp.local

4.3 通配符证书

mkcert "*.local.dev" local.dev localhost 127.0.0.1

4.4 指定输出文件名

mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1

4.5 生成 PKCS#12 格式

mkcert -pkcs12 localhost 127.0.0.1

生成 .p12 文件,适用于 Java 和 .NET 应用。

五、在 Web 服务器中使用

5.1 Nginx 配置

# 生成证书
mkdir -p /etc/nginx/ssl
mkcert -key-file /etc/nginx/ssl/local-key.pem -cert-file /etc/nginx/ssl/local-cert.pem localhost 127.0.0.1

Nginx 配置文件:

server {
    listen 443 ssl;
    server_name localhost;

    ssl_certificate /etc/nginx/ssl/local-cert.pem;
    ssl_certificate_key /etc/nginx/ssl/local-key.pem;

    location / {
        root /var/www/html;
        index index.html;
    }
}

5.2 Node.js 开发服务器

mkcert -key-file key.pem -cert-file cert.pem localhost

在 Node.js 中使用:

const https = require('https');
const fs = require('fs');

const options = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem')
};

https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('Hello HTTPS!');
}).listen(443);

5.3 Docker 环境

# 在宿主机生成证书
mkcert -key-file ./certs/key.pem -cert-file ./certs/cert.pem localhost 127.0.0.1

# Docker Compose 中挂载
# volumes:
#   - ./certs:/etc/ssl/certs/local

5.4 Webpack Dev Server

// webpack.config.js
const fs = require('fs');

module.exports = {
  devServer: {
    https: {
      key: fs.readFileSync('key.pem'),
      cert: fs.readFileSync('cert.pem'),
    },
    host: 'localhost',
    port: 8080,
  },
};

5.5 Vite 开发服务器

// vite.config.js
import fs from 'fs';

export default {
  server: {
    https: {
      key: fs.readFileSync('key.pem'),
      cert: fs.readFileSync('cert.pem'),
    },
  },
};

六、在远程搬瓦工 VPS 上使用

如果需要在搬瓦工 VPS 上的开发环境使用 mkcert,可以将本地的 CA 根证书复制到 VPS:

# 在本地机器上查看 CA 根证书路径
mkcert -CAROOT

# 复制根证书到 VPS
scp "$(mkcert -CAROOT)/rootCA.pem" root@YOUR_VPS_IP:/usr/local/share/ca-certificates/mkcert-ca.crt

# 在 VPS 上更新证书存储
ssh root@YOUR_VPS_IP "update-ca-certificates"

这样在 VPS 上使用 curl 等命令访问 mkcert 生成的证书时不会出现信任错误。

七、安全注意事项

  • 保护 CA 根私钥mkcert -CAROOT 目录下的 rootCA-key.pem 是 CA 私钥,如果泄露,攻击者可以生成被你系统信任的任意证书。
  • 不要共享 CA 根证书:每台机器应该有自己的本地 CA。
  • 仅用于开发:mkcert 生成的证书不应用于生产环境。
  • 卸载 CA:如果不再需要,可以卸载本地 CA:
mkcert -uninstall

八、常见问题

Firefox 不信任证书

Firefox 使用独立的证书存储,需要安装 NSS 工具:

apt install libnss3-tools -y
mkcert -install

证书过期

mkcert 生成的证书有效期默认为 2 年 3 个月。过期后重新生成即可:

mkcert localhost 127.0.0.1

总结

mkcert 是本地开发环境中使用 HTTPS 的最佳方案,零配置即可生成受信任的 SSL 证书,彻底消除浏览器安全警告。对于生产环境的 SSL 证书需求,请参考 acme.sh SSL 证书申请教程;对于 Kubernetes 环境,请参考 Cert-Manager K8S SSL 管理教程。选购搬瓦工 VPS 请查看全部方案,使用优惠码 NODESEEK2026 可享受折扣。如有问题可通过搬瓦工官网提交工单。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。