1

如何使用mkcert创建SSL证书

 1 year ago
source link: https://www.myfreax.com/how-to-create-locally-trusted-ssl-certificates-on-linux-and-macos-with-mkcert/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

如何使用mkcert创建SSL证书

您是否厌倦了在本地开发项目中使用不受信任的SSL证书?维护自己的证书颁发机构CA是一个痛苦的事情,这过程中需要用到神秘的程序和命令

Updated At 19 Sep 2022 5 min read
By myfreax
如何使用mkcert创建SSL证书

您是否厌倦了在本地开发项目中使用不受信任的SSL证书?维护自己的证书颁发机构CA是一个痛苦的事情,这过程中需要用到神秘的程序和命令。

在本教程中,我将向您展示一种在没有CA的情况下在本地开发计算机上创建受信任SSL证书的简单方法。

mkcert是一个简单的零配置工具,由Filippo Valsorda使用Go编写,用于制作本地浏览器可信HTTPS SSL证书,无需任何配置。

这将对您非常大的帮助,因为你无法从可信证书颁发机构获取有效DNS记录的本地名称的证书。让我们深入研究安装和使用mkcert。

例如我们站点在开发Service workers时就需要使用本地的可信证书进行测试,当初就找到mkcert这个软件,感谢Filippo Valsorda编写的软件。

线上可以使用免费证书,具体请参考教程使用Certbot为域名添加HTTPS SSL证书与自动续订

如果要在基于Debian的Linux发行版,例如Ubuntu,Linux mint等发行版安装mkcert,请首先使用apt软件包管理器更新索引运行命令sudo apt-get update

然后安装certutil依赖软件,运行命令sudo apt install wget libnss3-tools

要在基于Redhat的Linux发行版,例如CentOS和Fedora等发行版安装mkcert。您需要先使用yum命令安装nss-tools工具。

安装完成后,下载mkcert从Github仓库中的发行页面。在下载之前请先检查mkcert发布页面以获取最新版本。

在撰写本文时,最新版本是v1.3.0。我们将使用wget命令下载mkcert二进制文件。

使用mv命令将mkcert二进制文件移动到/usr/local/bin目录 ,这样就可以使用相对路径或者绝对路径运行mkcert。最后运行chmod命令为mkcert添加可执行权限。

sudo apt-get update
sudo apt install wget libnss3-tools
sudo yum install nss-tools -y #for centos Fedora Redhat


export VER="v1.3.0" && wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/${VER}/mkcert-${VER}-linux-amd64

chmod +x  mkcert
sudo mv mkcert /usr/local/bin

对于macOS用户,您可以手动下载二进制安装mkcert或者从中brew安装mkcert。

brew install mkcert
brew install nss # if you use Firefox

SSL证书

mkcert支持macOS,Windows,Fedora,RHEL,CentOS的update-ca-trust,Ubuntu,Debian的update-ca-certificates。Firefox,Chrome and Chromium,Java等CA根证书系统。

在创建本地可信证书之前,您需要运行命令mkcert -install在本地安装CA根证书系统。

当安装CA后mkcert将会提示你Created a new local CA at "/home/myfreax/.local/share/mkcert",CA已经安装你在家目录中 。

完成后,您可以开始为您的域名生成SSL证书。例如,我们使用mkcert为域名example.org创建本地可信SSL证书。

mkcert example.org命令将会创建本地浏览器受信任的证书。mkcert将会创建两个文件example.org-key.pemexample.org.pem在当前目录下。

example.org-key.pem文件是SSL证书的Key,可通过Nginx的ssl_certificate_key指令指定。

example.org.pem文件是SSL证书,可通过Nginx的ssl_certificate指令指定。

mkcert -install
mkcert example.org

现在让我们使用一个简单的Nginx配置文件测试mkcert创建SSL证书。这个例子是在Ubuntu 20.04安装nginx完成的。

首先你需要编辑Linux hosts文件,添加域名与IP的映射记录。

你可运行命令echo "127.0.0.1 example.org" | sudo tee -a  /etc/hosts直接追加一条DNS记录/etc/hosts文件。

然后创建以下Nginx配置文件,记得将nginx的配置包含到你Nginx的主配置文件。如果你不会配置Nginx。可以参考我们的教程如何在Ubuntu 20.04设置Nginx虚拟主机

server {
   listen 80;
   server_name example.org;
   root /var/www/test;
}

server {
   listen *:443 ssl http2;
   root /var/www/test;
   server_name example.org;
   ssl_certificate /home/myfreax/example.org.pem; 
   ssl_certificate_key /home/myfreax/example.org.pem;
}
certbot.webp

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK