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
。
评论区