搭建自定义域名的本地HTTPS开发服务器

mkcert简介

mkcert是一个使用go语言编写的生成本地自签证书的小程序,具有跨平台,使用简单,支持多域名,自动信任CA等一系列方便的特性可供本地开发时快速创建https环境使用。

安装方式也非常简单,由于go语言的静态编译和跨平台的特性,官方提供各平台预编译的版本,直接下载到本地,给可执行权限(Linux/Unix需要)就可以了。下载地址:

项目地址:[https://github.com/FiloSottile/mkcert](https://github.com/FiloSottile/mkcert)

安装mkcert

macOS

1. Homebrew

brew install mkcert
brew install nss # if you use Firefox

2. MacPorts.

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

然后安装  mkcert

Linuxbrew

brew install mkcert

或者自己编译 (requires Go 1.13+)

git clone https://github.com/FiloSottile/mkcert && cd mkcert
go build -ldflags "-X main.Version=$(git describe --tags)"

也可以下载编译好的包 the pre-built binaries.

Arch Linux , [mkcert](https://www.archlinux.org/packages/community/x86_64/mkcert/) 

sudo pacman -Syu mkcert

Windows

1.Chocolatey

choco install mkcert
  1. Scoop
scoop bucket add extras
scoop install mkcert

也可以下载编译好的包 the pre-built binaries

生成证书

需要首先在系统信任库中安装本地CA.

$ mkcert -install                                                                                                                                                                                                       ~
Using the local CA at "/home/angus/.local/share/mkcert"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! 👍

完成后,您可以开始为您的域生成SSL证书。例如,我将生成一个对以下名称有效的新证书:

$ mkcert myapp.net
mkcert localhost                                                                                                                                                                                              ~/.ssl
Using the local CA at "/home/angus/.local/share/mkcert"
Created a new certificate valid for the following names 📜
 - "myapp.net"

The certificate is at "./myapp.net.pem" and the key at "./myapp.net-key.pem"

测试mkcert证书

现在让我们使用一个简单的Nginx配置文件测试mkcert证书。

创建一个简单的网页

# cat /etc/nginx/conf.d/test.conf
server {
   listen 80;
   server_name localhost;
   root /var/www/test;
}

server {
   listen *:443 ssl http2;
   root /var/www/test;
   server_name localhost;
   ssl_certificate /home/angus/localhost.pem;
   ssl_certificate_key /home/angus/localhost-key.pem;
}

确保/etc/hosts文件包含已使用域的记录。

127.0.0.1 myapp.net

打开浏览器并使用提供的域名,你应该得到一个绿色栏。