logo

全站HTTPS升级系列(二)基于 acme.sh 从 Letsencrypt 生成免费的泛域名证书

作者:公子世无双2024.01.08 16:49浏览量:36

简介:本文将介绍如何使用 acme.sh 脚本从 Letsencrypt 获取免费的泛域名证书,实现全站 HTTPS 升级。我们将分步骤进行操作,并提供常见问题的解决方案,帮助您顺利完成证书的生成和部署。

在全站HTTPS升级系列(一)中,我们介绍了HTTPS的基本概念和优势,以及选择合适的证书提供商的重要性。本篇将详细介绍如何使用acme.sh脚本从Letsencrypt获取免费的泛域名证书,以实现全站HTTPS升级。
一、准备工作

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

相关文章推荐

发表评论