跳到主要内容

使用mkcert快速申请免费localhost证书

· 阅读需 3 分钟
OHTTPS

在本地开发环境中,通常使用自签名证书来启用 HTTPS。然而,自签名证书默认情况下会被浏览器标记为不安全,因为它们不是由受信任的证书颁发机构(CA)颁发的。mkcert解决了这个问题,它可以生成在本地完全受信任的证书,就像由正规 CA 颁发的一样。 mkcert是一个开源的用于创建本地可信开发证书的工具,Github地址为:https://github.com/FiloSottile/mkcert,它具有易于使用、跨平台、安全可靠等特点。下面介绍如何使用mkcert申请localhost证书。

一、安装 mkcert

1. 安装依赖(仅适用于部分系统)

  • macOS:如果安装过程中提示 x509: certificate signed by unknown authority 错误,可能需要先安装 Homebrew 的 ca-certificates 包:
brew install curl && brew install openssl && brew install ca-certificates
  • Linux(以 Ubuntu 为例):如果提示缺少依赖,可以安装以下软件包:
sudo apt-get install libnss3-tools

2. 安装 mkcert

  • macOS(使用 Homebrew):
brew install mkcert

Windows(使用 Scoop):

scoop install mkcert

Linux:可以从发布页面下载预编译的二进制文件或通过源码安装。例如,从发布页面下载适用于 Linux 的二进制文件后,将其移动到 /usr/local/bin/ 目录下,并赋予执行权限:

wget "https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-amd64"
sudo mv mkcert-v1.4.4-linux-amd64 /usr/local/bin/mkcert
sudo chmod +x /usr/local/bin/mkcert

二、生成证书

为 localhost 生成证书:

mkcert -install
mkcert localhost 127.0.0.1 ::1

mkcert -install 命令用于将 mkcert 生成的根证书安装到当前系统的信任存储中,这样生成的证书才会被系统信任。
mkcert localhost 127.0.0.1 ::1 命令用于为 localhost、127.0.0.1 和 ::1(IPv6 的本地回环地址)生成证书。
生成的证书文件包括 localhost.pem(证书文件)和 localhost-key.pem(私钥文件)。

三、在不同环境中使用证书

1. Node.js(使用 Express 框架示例)

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

const app = express();

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

https.createServer(options, app).listen(3000, () => {
console.log('HTTPS server running on port 3000');
});

2. Nginx

修改 Nginx 配置文件(通常位于 /etc/nginx/sites-available/default 或类似位置),添加以下内容:

server {
listen 443 ssl;
server_name localhost;

ssl_certificate /path/to/localhost.pem;
ssl_certificate_key /path/to/localhost-key.pem;

location / {
# 你的应用程序的处理逻辑
}
}

重新加载 Nginx 配置:

sudo service nginx reload

3. Apache

修改 Apache 配置文件(通常位于 /etc/apache2/sites-available/000-default.conf 或类似位置),添加以下内容:

<VirtualHost *:443>
ServerName localhost
SSLEngine on
SSLCertificateFile /path/to/localhost.pem
SSLCertificateKeyFile /path/to/localhost-key.pem
# 你的应用程序的处理逻辑
</VirtualHost>

重新加载 Apache 配置:

sudo service apache2 reload

通过以上步骤,就可以使用 mkcert 为 localhost 创建证书,并在不同的开发环境中使用这些证书来启用 HTTPS。这样可以在本地开发过程中模拟真实的 HTTPS 环境,确保开发的应用程序在安全连接方面的功能正常。

OHTTPS: 免费HTTPS证书申请 • 自动化更新、部署、监控
OHTTPS 支持通过多种域名验证方式(DNS验证、HTTP验证等)申请免费的HTTPS证书,包括单域名证书、多域名证书、通配符证书、IP证书等,支持HTTPS证书的自动化更新、自动化部署、自动化监控及告警等,并支持将HTTPS证书自动化部署至阿里云、腾讯云、百度云、七牛云、多吉云、又拍云、宝塔面板、Docker容器、SSH等。