全站HTTPS升级系列(二)基于 acme.sh 从 Letsencrypt 生成免费的泛域名证书
2024.01.08 16:49浏览量:36简介:本文将介绍如何使用 acme.sh 脚本从 Letsencrypt 获取免费的泛域名证书,实现全站 HTTPS 升级。我们将分步骤进行操作,并提供常见问题的解决方案,帮助您顺利完成证书的生成和部署。
在全站HTTPS升级系列(一)中,我们介绍了HTTPS的基本概念和优势,以及选择合适的证书提供商的重要性。本篇将详细介绍如何使用acme.sh脚本从Letsencrypt获取免费的泛域名证书,以实现全站HTTPS升级。
一、准备工作
- 确保您的服务器已安装并运行着web服务器软件(如Nginx、Apache等)。
- 安装 acme.sh 脚本。您可以通过在终端中运行以下命令来安装:
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install
- 生成 SSH 密钥对。您可以使用以下命令生成一个公钥和一个私钥:
将生成的公钥上传至 Letsencrypt 平台,以完成身份验证过程。ssh-keygen -t rsa -b 4096
二、生成泛域名证书 - 在终端中运行以下命令,启动证书生成流程:
其中,./acme.sh --issue -d example.com -d *.example.com -k rsa2048
example.com
是您的主域名,*.example.com
表示您的所有子域名。-k rsa2048
表示使用 RSA2048 位密钥对。 - 根据提示输入您的管理员邮箱和同意 Letsencrypt 的服务条款。
- 验证您的域名所有权。acme.sh 脚本将自动检测您是否拥有目标域名,如果没有,它将要求您执行特定的操作来验证所有权(如修改 DNS 记录)。按照提示操作即可。
- 等待脚本完成证书的生成和验证流程。在此期间,您可能需要为您的 web 服务器配置 SSL 证书。
- 脚本运行成功后,会在当前目录下生成
example.com.key
(私钥)和example.com.cer
(证书)文件。将证书文件部署到您的 web 服务器的相应位置。
三、配置 web 服务器使用 HTTPS - 根据您使用的 web 服务器软件,将生成的证书文件和私钥文件部署到正确的位置。例如,如果您使用的是 Nginx,您可以将证书文件和私钥文件分别放置在
/etc/nginx/ssl/example.com.cer
和/etc/nginx/ssl/example.com.key
路径下。 - 在 web 服务器的配置文件中启用 HTTPS。以 Nginx 为例,打开
/etc/nginx/nginx.conf
文件,找到http
部分,添加以下内容:server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.cer;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
...
}
- 保存并关闭配置文件后,重新加载 Nginx 服务以使更改生效:
service nginx reload
- 现在,您的 web 服务器已经配置为使用 HTTPS,所有通过 443 端口的请求都将被加密传输。
四、常见问题与解决方案 - 问题:证书验证失败。解决方案:确保您拥有目标域名,并按照 acme.sh 的提示正确验证域名所有权。常见错误包括 DNS 记录未正确设置或 SSL 证书配置不正确。请检查您的 DNS 记录和 SSL 证书配置是否正确无误。
- 问题:脚本运行过程中出现错误或中断。解决方案:检查脚本的输出日志以获取更多详细信息。常见错误包括网络连接问题、权限问题或配置错误等。根据日志中的错误信息进行相应的排查和修复。
- 问题:浏览器显示混合内容警告。解决方案:确保您的所有内容(包括静态资源、CSS、JavaScript 等)都通过 HTTPS 进行加载,而不是 HTTP。如果您的
发表评论
登录后可评论,请前往 登录 或 注册