侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux mkcert命令教程:创建可信本地SSL/TLS证书(附案例详解和注意事项)

Linux mkcert命令教程:创建本地HTTPS环境的利器(附案例详解和注意事项)

在本指南中,我们将深入了解Linux环境下的mkcert命令。此命令是为开发者设计的,使他们能够在本地环境快速创建可信的SSL/TLS证书。我们不仅提供基础知识和常见用例,而且还包括了一些高级技巧和注意事项,以帮助您无缝地使用mkcert

Linux mkcert命令介绍

mkcert是一个简化的工具,用于本地创建自签名的SSL/TLS证书。它自动创建和安装一个本地信任根证书颁发机构,然后使用它来生成可信任的证书。这避免了浏览器中常见的安全警告,并提供了一个更接近生产环境的本地开发体验。

Linux mkcert命令适用的Linux版本

mkcert支持大多数Linux发行版,包括Debian、Ubuntu、Fedora、CentOS等。对于那些默认不包含mkcert的发行版,可以通过包管理器进行安装。例如,在CentOS 7和CentOS 8上,安装过程略有不同:

  • CentOS 7(使用yum):
    [linux@bashcommandnotfound.cn ~]$ sudo yum install mkcert
    
  • CentOS 8(使用dnf):
    [linux@bashcommandnotfound.cn ~]$ sudo dnf install mkcert
    

Debian/Ubuntu 安装命令

[linux@bashcommandnotfound.cn ~]$ sudo apt install mkcert

Fedora 安装命令

[linux@bashcommandnotfound.cn ~]$ sudo dnf install mkcert

Linux mkcert命令的基本语法

命令的基本语法如下所示:

mkcert [options] [domains...]

Linux mkcert命令的常用选项或参数说明

下面是mkcert命令的常用选项和参数,按字母顺序排列:

选项描述
-install安装本地CA
-uninstall卸载本地CA
-CAROOT打印本地CA的根目录
-cert-file自定义证书文件的输出路径
-key-file自定义私钥文件的输出路径
-pkcs12生成.p12文件包含证书和私钥

Linux mkcert命令的实例

以下实例将展示如何使用mkcert命令创建和管理证书。

实例1:安装本地CA

[linux@bashcommandnotfound.cn ~]$ mkcert -install

实例2:为本地开发环境创建证书

localhost生成证书和对应的私钥。

[linux@bashcommandnotfound.cn ~]$ mkcert localhost

实例3:为多个域名创建证书

同时为多个域名生成一个证书。

[linux@bashcommandnotfound.cn ~]$ mkcert example.com "*.example.org" myapp.dev localhost 127.0.0.1 ::1

实例4:自定义证书和私钥的输出文件名

使用自定义路径保存生成的证书和私钥文件。

[linux@bashcommandnotfound.cn ~]$ mkcert -cert-file my-cert.pem -key-file my-key.pem localhost

实例5:创建自签名的通配符证书

创建一个通配符证书,这将适用于一个域名下的所有子域名。

[linux@bashcommandnotfound.cn ~]$ mkcert "*.example.com"

这将生成_wildcard.example.com.pem_wildcard.example.com-key.pem文件,用于所有*.example.com子域。

实例6:生成PKCS#12文件

生成包含证书和私钥的PKCS#12归档文件,一般用于某些需要单个文件的服务器配置或导入到某些系统。

[linux@bashcommandnotfound.cn ~]$ mkcert -pkcs12 localhost

这将生成一个名为localhost.p12的文件,可用于需要.p12格式证书的场景。

实例7:为多个不同级别的子域创建证书

同时为多级子域生成证书。

[linux@bashcommandnotfound.cn ~]$ mkcert "site.example.com" "sub.site.example.com"

这将确保无论是访问顶级站点还是子域,都能得到正确的证书。

实例8:删除本地CA

如果您不再需要本地CA,可以用下面的命令将其卸载。

[linux@bashcommandnotfound.cn ~]$ mkcert -uninstall

这将删除本地CA的信任状态,并应在不再需要时执行以保持系统安全。

实例9:创建证书并指定IP地址

为本地开发环境创建证书,同时指定特定的IP地址。

[linux@bashcommandnotfound.cn ~]$ mkcert "localhost" "127.0.0.1"

这将确保即使通过IP地址访问应用程序,也能够得到正确的SSL/TLS保护。

实例10:检查生成的证书详情

创建证书后,您可能想检查证书的详情。虽然mkcert本身没有提供这样的命令,但您可以使用openssl来实现。

[linux@bashcommandnotfound.cn ~]$ openssl x509 -text -noout -in localhost.pem

这个命令将打印出证书localhost.pem的所有细节,包括颁发者、有效期、主题名称等。

实例11:为一个域名和其多个子域创建证书

创建一个证书,同时适用于一个顶级域名和多个子域。

[linux@bashcommandnotfound.cn ~]$ mkcert example.com "*.example.com" mail.example.com

这条命令将创建一个单一的证书文件,适用于example.com,任何子域(通配符*.example.com),以及特定的子域mail.example.com

实例12:创建证书并指定多个IP地址

生成适用于多个IP地址的证书。

[linux@bashcommandnotfound.cn ~]$ mkcert "localhost" "127.0.0.1" "192.168.0.1"

这将为localhost和两个指定的IP地址生成一个证书,确保从这些地址访问时都能使用HTTPS。

实例13:使用已存在的CA签发证书

如果您已经有了一个CA证书和私钥,您可以让mkcert使用它们而不是自动生成的CA。

首先,设置CAROOT环境变量指向您的CA证书和私钥的目录:

[linux@bashcommandnotfound.cn ~]$ export CAROOT=/path/to/your/ca-folder

然后,运行mkcert来创建新的证书:

[linux@bashcommandnotfound.cn ~]$ mkcert -install
[linux@bashcommandnotfound.cn ~]$ mkcert example.com

实例14:创建证书用于特定软件或服务

某些服务,如MySQL或RabbitMQ,支持TLS连接,但可能需要证书的特定格式。使用mkcert生成证书后,您可能需要转换证书格式以匹配服务要求。

例如,将PEM格式的证书和私钥转换为DER格式:

[linux@bashcommandnotfound.cn ~]$ openssl x509 -outform der -in certificate.pem -out certificate.der
[linux@bashcommandnotfound.cn ~]$ openssl rsa -outform der -in privatekey.pem -out privatekey.der

实例15:检查本地系统中所有由mkcert创建的证书

虽然mkcert没有直接的命令列出所有创建的证书,但您可以通过查找mkcert的默认证书存储位置来找到它们:

[linux@bashcommandnotfound.cn ~]$ find $(mkcert -CAROOT) -type f \( -name "*.pem" -o -name "*.p12" \)

这将列出所有mkcert生成的.pem.p12文件。

实例16:为开发和测试环境创建具有不同有效期的证书

mkcert创建的证书默认有效期较长,但您可能想为测试目的创建一个短期有效的证书。mkcert本身不支持直接设置有效期,但您可以使用openssl在生成证书之后修改有效期:

[linux@bashcommandnotfound.cn ~]$ mkcert example.test
[linux@bashcommandnotfound.cn ~]$ openssl x509 -in example.test.pem -signkey example.test-key.pem -x509toreq -out example.test.csr
[linux@bashcommandnotfound.cn ~]$ openssl x509 -req -in example.test.csr -signkey example.test-key.pem -out example.test.pem -days 30

在这个例子中,我们首先用mkcert创建了证书,然后用openssl重新签发了证书,将有效期设置为30天。

常见技巧或高级技巧

技巧1:检查本地CA的根目录

要查看mkcert安装的本地CA的根目录,您可以运行以下命令:

mkcert -CAROOT

这将显示存储根CA密钥和证书的目录路径。

技巧2:为不同环境创建证书

开发者可以为不同的开发环境(如staging和production)创建不同的证书,以模拟真实环境中的证书管理。

Linux mkcert命令的注意事项

  • 确保在本地开发环境中使用mkcert生成的证书,不要在生产环境中使用。
  • 使用mkcert时,对于所有的域名和子域名,你都需要生成新的证书,因为它们是特定于域名的。
  • 如果在执行mkcert时收到bash: mkcert: command not found,请确保按照上述方法安装了mkcert
0

评论区