在本教程中,您将学习如何创建 本地受信任的 SSL 证书 在 Ubuntu 20.04 上使用 mkcert。 证书 是一个 简单的零配置工具,用于制作本地受信任的开发证书。 它 自动在系统根存储中创建并安装本地 CA,并生成本地信任的证书。
使用来自真实证书颁发机构 (CA) 的证书进行开发可能是危险的或不可能的(对于像 localhost
或者 127.0.0.1
),但自签名证书会导致信任错误。 管理您自己的 CA 是最好的解决方案,但通常涉及神秘的命令、专业知识和手动步骤,但不再需要 mkcert 实用程序的可用性。
在 Ubuntu 20.04 上使用 mkcert 创建本地信任的 SSL 证书
在 Ubuntu 20.04 上安装 Certutil
作为先决条件,您需要安装 证书实用程序, 一个命令行实用程序,可以在安装 mkcert 实用程序之前创建和修改证书和密钥数据库。
sudo apt install libnss3-tools -y
在 Ubuntu 20.04 上安装 mkcert
certutil 安装完成后,从 Github 发布页面下载当前版本的 mkcert 预构建二进制文件。
在撰写本文时,mkcert 的当前版本是 v1.4.3
所以下载当前版本并安装它,如下所示
wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64
sudo cp mkcert-v1.4.3-linux-amd64 /usr/local/bin/mkcert
sudo chmod +x /usr/local/bin/mkcert
在 Ubuntu 20.04 上生成本地 CA
现在安装了 mkcert 实用程序,运行以下命令在 Ubuntu 20.04 上生成和安装本地 CA。
mkcert -install
示例命令输出;
The local CA is now installed in the system trust store! ⚡️ The local CA is now installed in the Firefox and/or Chrome/Chromium trust store (requires browser restart)! ?
该命令创建一个根 CA 并存储在 ~/.local/share/mkcert.
您可以通过运行以下命令找到根 CA 路径。
mkcert -CAROOT
/home/koromicha/.local/share/mkcert
列出目录内容;
ls -1 ~/.local/share/mkcert
rootCA-key.pem rootCA.pem
在 Ubuntu 20.04 上使用 mkcert 创建本地信任的 SSL 证书
现在您拥有本地 CA,运行以下命令以使用 mkcert 命令生成本地 SSL 证书。
mkcert kifarunix-demo.com '*.kifarunix-demo.com' localhost 127.0.0.1 ::1
Sample command output;
Created a new certificate valid for the following names ? - "kifarunix-demo.com" - "*.kifarunix-demo.com" - "localhost" - "127.0.0.1" - "::1" Reminder: X.509 wildcards only go one level deep, so this won't match a.b.kifarunix-demo.com ℹ️ The certificate is at "./kifarunix-demo.com+4.pem" and the key at "./kifarunix-demo.com+4-key.pem" ✅ It will expire on 31 August 2023 ?
您在当前工作目录中有证书和密钥;
ls -1 ./kifarunix-demo.com+*
./kifarunix-demo.com+4-key.pem ./kifarunix-demo.com+4.pem
使用证书启用 Web 服务器 HTTPS
证书现已安装,是时候让您的网络服务器将它们用于 HTTPS 连接了。
配置 Apache 要使用这些证书,请编辑默认的 ssl 配置文件, /etc/apache2/sites-available/default-ssl.conf 并将 SSL 证书和密钥文件更改为指向上面本地生成的证书和密钥文件。
请参阅下面的示例。 请注意,证书位于我的主目录中。
请务必相应地替换路径。
sudo sed -i 's#/etc/ssl/certs/ssl-cert-snakeoil.pem#/home/koromicha/kifarunix-demo.com+4.pem#; s#/etc/ssl/private/ssl-cert-snakeoil.key#/home/koromicha/kifarunix-demo.com+4-key.pem#' /etc/apache2/sites-available/default-ssl.conf
验证这一点;
grep -E "SSLCertificateFile|SSLCertificateKeyFile" /etc/apache2/sites-available/default-ssl.conf
# SSLCertificateFile directive is needed. SSLCertificateFile /home/koromicha/kifarunix-demo.com+4.pem SSLCertificateKeyFile /home/koromicha/kifarunix-demo.com+4-key.pem # the referenced file can be the same as SSLCertificateFile
使能够 Apache 通过加载 ssl 模块来使用 SSL;
sudo a2enmod ssl
sudo a2ensite default-ssl.conf
重新加载并重新启动 Apache 激活新配置
sudo systemctl restart apache2
验证使用 mkcert 生成的本地 SSL 证书
导航到浏览器并尝试访问您的域。
我正在为我的 DNS 条目使用本地主机文件。
为 Nginx Web 服务器启用证书
创建您的网页配置,如下所示。
相应地替换证书和密钥的路径
vim /etc/nginx/sites-available/example.com
server { listen 80; listen 443 ssl; ssl on; ssl_certificate /home/koromicha/kifarunix-demo.com+4.pem; ssl_certificate_key /home/koromicha/kifarunix-demo.com+4-key.pem; server_name example.com; location / { root /var/www/html/example; index index.html; } }
验证配置没有错误。
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
重启 Nginx
systemctl restart nginx
导航到浏览器并测试您的域的 ssl。
好吧,似乎到目前为止一切都很好。
我们关于如何在 Ubuntu 20.04 上使用 mkcert 创建本地可信 SSL 证书的指南到此结束。
更多的 mkcert
使用信息。
mkcert --help
在 CentOS 8 上使用 SSL/TLS 证书配置 Nginx
使用 Prometheus 和 Grafana 监控 SSL/TLS 证书到期
配置 Apache 在 CentOS 8 上使用 SSL/TLS 证书
配置 Filebeat-Logstash SSL/TLS 连接的简单方法