自己给自己发证书

手把手教你快速搭建本地可信HTTPS环境:自定义域名+局域网加密访问

本文适用于已完成DNS服务器搭建(前置教程参考:自建DNS服务器指南),需要为自定义域名配置HTTPS证书的开发者。通过mkcert工具,我们可以在开发环境快速实现浏览器无警告的HTTPS访问。


一、为什么选择mkcert?

在内网穿透/智能家居/开发测试等场景中,我们常需要:

  • 使用自定义域名(如:myproject.test)
  • 通过HTTPS加密访问局域网服务(IP:192.168.1.100)
  • 避免浏览器"不安全"警告

传统方案痛点:手动创建CA证书流程复杂,移动端信任困难
mkcert优势
✅ 一键生成受信证书
✅ 支持多域名/IP绑定
✅ 跨平台支持(Win/Mac/Linux)
✅ 移动端证书部署简单


二、操作流程总览

graph TD
    A[安装mkcert] --> B[生成本地CA]
    B --> C[创建域名证书]
    C --> D[配置Web服务器]
    D --> E{是否需要跨设备访问?}
    E -->|是| F[导出CA证书到手机/平板]
    E -->|否| G[完成部署]

三、详细操作步骤

1. 安装mkcert(按系统选择)

系统 安装命令
Windows(Chocolatey) choco install mkcert
macOS(Homebrew) brew install mkcert
Linux(Debian) sudo apt install libnss3-tools && curl -sSL https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-amd64 -o /usr/local/bin/mkcert && chmod +x /usr/local/bin/mkcert

⚠️ Linux用户需确保glibc版本兼容性,若遇问题可尝试静态编译版本

2. 初始化本地证书中心

mkcert -install

执行后会生成根CA证书并自动添加到系统钥匙串,此时可在"钥匙串访问"(Mac)或"管理证书"(Win)中查看到mkcert development CA证书

3. 生成域名证书(支持多参数)

mkcert myproject.test "*.myproject.test" 192.168.1.100 ::1 localhost

该命令将生成支持以下场景的证书:

生成文件示例:

  • myproject.test+5-key.pem (私钥文件)
  • myproject.test+5.pem (证书文件)

🔍 文件名中的"+5"表示包含5个绑定条目,证书有效期默认为1年

4. Web服务器配置示例

Nginx配置片段

server {
    listen 443 ssl;
    server_name myproject.test 192.168.1.100;

    ssl_certificate /path/to/myproject.test+5.pem;
    ssl_certificate_key /path/to/myproject.test+5-key.pem;

    # 推荐添加的SSL配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
}

Apache配置示例


    ServerName myproject.test

    SSLEngine on
    SSLCertificateFile "/path/to/myproject.test+5.pem"
    SSLCertificateKeyFile "/path/to/myproject.test+5-key.pem"

5. 移动端信任配置(可选)

mkcert -CAROOT # 获取CA证书存储路径

将路径下的rootCA.pem文件通过邮件/二维码等方式传输到移动设备,按以下方式安装:

  • iOS:设置 -> 通用 -> 关于本机 -> 证书信任设置
  • Android:设置 -> 安全 -> 加密与凭据 -> 从存储中安装
  • Windows设备:以管理员身份运行证书导入向导

四、进阶配置建议

1. Hosts文件绑定(多终端适配)

# PC端路径:C:WindowsSystem32driversetchosts 或 /etc/hosts
192.168.1.100 myproject.test api.myproject.test

# 路由器级配置(OpenWRT示例)
uci add_list dhcp.@dnsmasq[-1].addnhosts=/etc/hosts/custom
echo "address=/myproject.test/192.168.1.100" > /etc/hosts/custom

2. 定期证书更新策略

创建crontab任务自动续期:

0 0 1 * * /usr/local/bin/mkcert -cert-file /etc/certs/myproject.pem -key-file /etc/certs/myproject-key.pem myproject.test 192.168.1.100 && systemctl reload nginx

3. 多环境配置管理

# 开发环境
mkcert -cert-file dev.pem -key-file dev.key dev.test 127.0.0.1

# 测试环境
mkcert -cert-file test.pem -key-file test.key test.env.local 192.168.2.100

五、常见问题处理

Q:证书已安装但Chrome仍提示不安全?

A:检查系统时间是否准确,清除浏览器证书缓存,尝试chrome://restart

Q:如何查看证书详细信息?

openssl x509 -in myproject.test+5.pem -text -noout

Q:能否用于生产环境?

A:仅限局域网/开发测试环境,公网服务必须使用正规CA签发的证书


六、验证部署成功

  1. 浏览器访问 https://myproject.test 检查绿色锁标志
  2. 使用SSL Labs测试工具:https://www.ssllabs.com/ssltest/
  3. 手机连接同一WiFi后访问测试

通过以上步骤,您已成功构建了一个安全的本地HTTPS环境。结合前期搭建的DNS服务器,现在可以实现:
🌐 自定义域名访问 + 🔒 HTTPS加密 + 📱 移动端兼容 的完整本地服务生态。对于需要双向认证的场景,可进一步探索mkcert的客户端证书生成功能。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇