一、mkcert介绍
一句话介绍mkcert:一个生成本地 HTTPS 加密证书的工具,一个命令就可以生成证书,不需要任何配置,支持Windows、macOS和Linux平台。
项目信息
# github地址
https://github.com/FiloSottile/mkcert
功能特性
功能特性就一点:一个命令就可以生成证书,不需要任何配置。
二、mkcert安装
MacOS
brew install mkcert
brew install nss # if you use Firefox
# 或者
sudo port selfupdate
sudo port install mkcert
sudo port install nss # if you use Firefox
Linux
# 先安装certutil
sudo apt install libnss3-tools
-or-
sudo yum install nss-tools
-or-
sudo pacman -S nss
-or-
sudo zypper install mozilla-nss-tools
# 直接下载可执行文件
curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"
chmod +x mkcert-v*-linux-amd64
sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert
Windows
choco install mkcert
# 或者
scoop bucket add extras
scoop install mkcert
三、mkcert使用
生成证书
# mkcert生成证书
mkcert domain1 [domain2 [...]] #mkcert后跟域名
我们模拟一个HTTPS访问网站,网站地址为myosm.com
1. 创建网站工作目录
# 创建网站目录
mkdir -p /opt/httpss-nginx/ccert
mkdir -p /opt/https-nginx/etc
2. 创建一个自签证书
cd mkdir -p /opt/https-nginx/cert
mkcert myosm.com
# 将会看到以下信息
The certificate is at "./myosm.com.pem" and the key at "./myosm.com-key.pem" ✅
It will expire on 21 August 2026
3. 准备index.html 文件
vim /opt/https-nginx/index.html
# index.html 内容如下
<!DOCTYPE html>
<html>
<head>
<title>欢迎页面</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f7f7f7;
text-align: center;
}
#welcome {
margin: 0 auto;
width: 400px;
padding: 20px;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
h1 {
color: #555;
font-size: 24px;
margin-bottom: 20px;
}
p {
color: #666;
font-size: 14px;
line-height: 1.5;
}
</style>
</head>
<body>
<div id="welcome">
<h1>欢迎来到有趣的开源集市</h1>
<p>分享有趣的开源产品、技术、市场趋势等内容。</p>
</div>
</body>
</html>
4. 准备nginx,conf文件
cd /opt/https-nginx/etc
vim nginx.conf
# nginx.conf内容如下
worker_processes auto;
events {
worker_connections 1024;
}
http {
server {
listen 443 ssl;
server_name localhost;
charset utf-8;
ssl_certificate /etc/nginx/ssl/myosm.com.pem;
ssl_certificate_key /etc/nginx/ssl/myosm.com-key.pem;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
charset utf-8;
}
}
}
5. 启动应用
# 启动https应用
docker run -d -p 443:443 -v /opt/https-nginx/etc/nginx.conf:/etc/nginx/nginx.conf -v /opt/https-nginx/index.html:/usr/share/nginx/html/index.html -v /opt/https-nginx/cert/:/etc/nginx/ssl/ --name https-nginx nginx:latest
6. 访问页面
这时我们发现虽然启用了https服务,并且访问也没有问题,但是浏览器会提示连接不安全。这个是因为访问的PC上没有安装好 CA 证书,需要本地访问PC安装CA证书。
7. 安装CA证书
mkcert -instal
The local CA is already installed in the system trust store!
The local CA is already installed in the Firefox and/or Chrome/Chromium trust store!
# 查看CA目录
mkcert -CAROOT
/root/.local/share/mkcert
该目录中有两个文件:rootCA-key.pem 和 rootCA.pem。将 rootCA.pem 复制到 PC 上,并将其后缀改为 .crt。
双击
rootCA.crt
,根据提示安装证书即可(注意选择受信任的根证书颁发机构)。
9. 访问页面
重启浏览器,重新访问网站,可以看到连接已经变为安全。
四、 总结
通过 mkcert 可以快速为个人或小型网站、企业内部网站等生成自签名证书。与 OpenSSL 相比,mkcert 的使用更加简单,大大简化了在内网生成SSL证书的复杂性。