教你秒建受信任的本地SSL证书,彻底解决开发测试环境的无效证书警告烦恼!
您是否厌倦了在本地开发项目中使用不受信任的 SSL 证书?维护自己的证书颁发机构(CA)是一个痛苦的事情,这过程中需要用到神秘的程序和命令。在本指南中,我将向您展示一种在没有 CA 的情况下在本地开发计算机上使用受信任 SSL 证书的简单方法。
mkcert
是一个简单的零配置工具,由 Filippo Valsorda 使用 Go 编写,用于制作具有您喜欢的任何名称的本地可信开发证书,无需任何配置。这将对您有所帮助,因为无法从可信证书颁发机构获取没有有效 DNS 记录的本地名称的证书。让我们深入研究安装和使用mkcert
。
项目地址:https://github.com/FiloSottile/mkcert
如果你想申请一个线上可以使用免费证书,也可以参考「手把手教你免费申请支持通配符的 SSL 证书」和「Lets Encrypt 免费通配符 SSL 证书申请教程」两篇教程。
在不同平台下安装 mkcert
如何在 Ubuntu / Debian 上安装 mkcert
要在任何 Ubuntu 或 Debian 系统上安装mkcert
,首先要安装certutil
依赖项:
$ sudo apt-get updatesudo apt install wget libnss3-tools
安装完成后,下载mkcert
来自 Github 的二进制包。检查mkcert
发布页面以获取最新版本。在撰写本文时,最新版本是。v1.4.0
$ export VER="v1.4.0" && wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/${VER}/mkcert-${VER}-linux-amd64
下载文件后,使文件可执行并将二进制文件放在/usr/local/bin
下面。
$ chmod +x mkcert
$ sudo mv mkcert /usr/local/bin
如何在 CentOS / Fedora 上安装 mkcert
在 CentOS 和 Fedora 上安装mkcert
类似于 Ubuntu / Debian 安装,您只需要先安装nss-tools
工具。
安装 nss-tools
$ sudo yum install nss-tools
安装完成后,下载mkcert
二进制包,就像安装 Ubuntu 一样。
$ export VER="v1.4.0" && wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/${VER}/mkcert-${VER}-linux-amd64
下载文件后,使文件可执行并将二进制文件放在/usr/local/bin
下面。
$ chmod +x mkcert
$ sudo mv mkcert /usr/local/bin
如何在 Arch Linux 上安装 mkcert
对于 Arch Linux,您可以使用上述过程或使用 AUR 安装mkcert
。对于通过 AUR 安装你需要使用 AUR 助手,推荐yay
。yay
是 Arch Linux / Manjaro 的最佳 AUR 助手。
yay
后,使用以下命令安装mkcert
。
$ yay -S --noconfirm --needed go
$ yay -S --noconfirm --needed mkcert
如何在 macOS 上安装 mkcert
对于 macOS 用户,您可以下载二进制包或者从中 brew 安装mkcert
。
$ brew install mkcert
$ brew install nss if you use Firefox
对于二进制安装:
$ export VER="v1.4.0" && wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/${VER}/mkcert-${VER}-linux-amd64
下载文件后,使文件可执行并将二进制文件放在 /usr/local/bin 下面。
$ chmod +x mkcert
$ sudo mv mkcert /usr/local/bin
如何使用 mkcert 生成本地受信任的 SSL 证书
生成本地受信任的 SSL 证书
mkcert
支持以下根存储:
macOS system store
Windows system store
update-ca-trust (Fedora、RHEL、CentOS)
update-ca-certificates (Ubuntu、Debian)
Firefox(仅限macOS和Linux)
Chrome and Chromium
Java( JAVA_HOME )
要获取mkcert
的帮助页面,请传递该选项--help
。
Usage of mkcert:
$ mkcert -install
Install the local CA in the system trust store.
$ mkcert example.org
Generate "example.org.pem" and "example.org-key.pem".
$ mkcert example.com myapp.dev localhost 127.0.0.1 ::1
Generate "example.com+4.pem" and "example.com+4-key.pem".
$ mkcert *.example.com
Generate "_wildcard.example.com.pem" and "_wildcard.example.com-key.pem".
$ mkcert -pkcs12 example.com
Generate "example.com.p12" instead of a PEM file.
$ mkcert -uninstall
Uninstall the local CA (but do not delete it).
Change the CA certificate and key storage location by setting $CAROOT,
print it with "mkcert -CAROOT".
您需要首先在系统信任库中安装本地 CA.
$ mkcert -install
Created a new local CA at "/home/myfreax/.local/share/mkcert" ?
The local CA is now installed in the system trust store! ⚡️
完成后,您可以开始为您的域名生成 SSL 证书。例如,我将生成一个对以下名称有效的新证书。
"mydomain.com"
"*.mydomain.co"
"myapp.net"
"localhost"
"127.0.0.1"
"::1"
$ mkcert mydomain.com *.mydomain.co myapp.net localhost 127.0.0.1 ::1
命令执行后,会输出以下内容。
Using the local CA at "/root/.local/share/mkcert" ✨
Created a new certificate valid for the following names ?
- "mydomain.com"
- "*.mydomain.co"
- "myapp.net"
- "localhost"
- "127.0.0.1"
- "::1"
The certificate is at "./mydomain.com+5.pem" and the key at "./mydomain.com+5-key.pem" ✅
证书生成完后,你也可以查看证书的内容。
$ cat ./mydomain.com+5.pem
测试 mkcert 证书
现在让我们使用一个简单的Nginx
配置文件测试mkcert
证书。这个例子是在Ubuntu 16.04
系统上完成的。
安装一个 Nginx 服务器
$ sudo apt-get install nginx
创建一个简单的网页
$ echo Hello Hi-Linux.com ! > /var/www/test/index.html
配置一个简单的 HTTPS 服务器
$cat/etc/nginx/conf.d/test.conf
server {
listen80;
server_namemydomain.com myapp.net;
root/var/www/test;
}
server{
listen*:443ssl http2;
root/var/www/test;
server_namemydomain.com myapp.net;
ssl_certificate/home/jmutai/mydomain.com+5.pem;
ssl_certificate_key/home/jmutai/mydomain.com+5-key.pem;
}
确保您的
/etc/hosts
文件包含已使用域名的记录。
$ cat/etc/hosts
127.0.0.1 myapp.net
127.0.0.1 mydomain.com
打开浏览器并使用提供的域名,你应该得到一个带有绿色安全图标的地址栏,至此创建一个受信任的本地SSL
证书就完成了。
来源:myfreax
原文:http://t.cn/AiRQ3uFJ
题图:来自谷歌图片搜索
版权:本文版权归原作者所有
投稿:欢迎投稿,邮箱: editor@hi-linux.com
你可能还喜欢
点击下方图片即可阅读
可能是东半球最好的 Curl 学习指南,强烈建议收藏!
对于购买SSL证书,确实需要先拥有域名。域名是网站的唯一标识符,类似于网站的地址。在购买SSL证书时,你需要提供域名作为证书的一部分。这是因为SSL证书的作用是保护特定域名的数据传输安全,所以必须与你的域名相对应。
购买SSL证书要先有域名吗?
在网络安全领域,SSL证书是一种常见且重要的安全措施,能够为网站提供加密保护和身份认证。许多网站在保护用户数据和建立信任的基础上购买SSL证书,以确保用户的隐私