云边日落 予独爱莲之出污泥而不染,濯清涟而不妖。 (宋·周敦颐·爱莲说)
歌曲封面 未知作品
  • 歌曲封面“魔女の宅急便”~ルージュの伝言松任谷由実

渝ICP备2021002886号-1

渝公网安备50022502000591号

网站已运行 3 年 319 天 6 小时 38 分

Powered by Typecho & Sunny

8 online · 41 ms

Title

Nginx 安装及配置网站和 SSL 证书

酒笙

·

Article

Nginx 安装及配置网站和 SSL 证书

本文档将指导您在 Ubuntu 和 CentOS 系统上安装 Nginx Web 服务器,并为网站 www.xxx.com 配置独立的运行目录和配置文件,以及使用 acme.sh 申请 SSL 证书。

准备工作

在开始之前,请确保您以 root 权限或者具有 sudo 权限的用户身份登录到您的 Linux 系统。

安装 Nginx

Ubuntu 系统

  1. 更新软件包列表:

    ♾️ bash 代码:
    sudo apt update
  2. 安装 Nginx:

    ♾️ bash 代码:
    sudo apt install nginx

CentOS 系统

  1. 更新软件包列表:

    ♾️ bash 代码:
    sudo yum update
  2. 安装 Nginx:

    ♾️ bash 代码:
    sudo yum install nginx

启动和验证 Nginx

  1. 启动 Nginx 并设置开机自启动:

    ♾️ bash 代码:
    sudo systemctl start nginx
    sudo systemctl enable nginx
  2. 检查 Nginx 是否安装成功并正常运行:

    ♾️ bash 代码:
    sudo systemctl status nginx

    如果状态显示为 active (running), 说明 Nginx 已经成功安装并启动。

配置网站目录和配置文件

创建网站运行目录

♾️ bash 代码:
sudo mkdir -p /www/www.xxx.com

配置文件

Ubuntu

  1. /etc/nginx/sites-available/ 目录下创建一个新的配置文件:

    ♾️ bash 代码:
    sudo vim /etc/nginx/sites-available/www.xxx.com

CentOS

  1. /etc/nginx/conf.d/ 目录下创建一个新的配置文件:

    ♾️ bash 代码:
    sudo vim /etc/nginx/conf.d/www.xxx.com.conf

公共配置内容

在打开的文件中添加以下内容:

♾️ nginx 代码:
server {
    listen 80;
    server_name www.xxx.com;  # 设置域名
    root /www/www.xxx.com;    # 网站根目录
    index index.html;         # 默认首页文件

    location / {
        try_files $uri $uri/ =404;  # 如果请求的文件不存在,返回404错误
    }
}

保存文件并退出编辑器。

启用网站

Ubuntu

创建到 /etc/nginx/sites-enabled/ 目录的软链接,以启用新网站:

♾️ bash 代码:
sudo ln -s /etc/nginx/sites-available/www.xxx.com /etc/nginx/sites-enabled/

重新加载 Nginx 配置文件

♾️ bash 代码:
sudo nginx -t
sudo systemctl reload nginx

使用 acme.sh 申请 SSL 证书

acme.sh 是一个简单的、开源的、支持多种验证方式的 SSL 证书申请和管理工具。它支持 Let's Encrypt、BuyPass、SSL.com 等多个证书颁发机构,可以自动完成证书的申请、续期和部署。

安装 acme.sh

♾️ bash 代码:
curl https://get.acme.sh | sh
source ~/.bashrc

安装完成后,acme.sh 会被安装到 ~/.acme.sh/ 目录。安装脚本会自动创建 alias 和 cronjob 以便定期检查和更新证书。

生成 SSL 证书

♾️ bash 代码:
acme.sh --issue -d www.xxx.com  --webroot /home/wwwroot/www.xxx.com/

配置 Nginx 使用 SSL 证书详细步骤

要在 Nginx 中配置 SSL 证书以启用 HTTPS 安全连接,您需要修改 Nginx 的配置文件。下面是一个详细的步骤,包括 SSL 配置的各个重要部分:

  1. 找到或创建 Nginx 配置文件:
    通常,Nginx 的配置文件位于 /etc/nginx/nginx.conf/etc/nginx/sites-available/ 目录下的特定站点配置文件。您可能需要编辑一个现有的文件或创建一个新的文件来配置特定的域。
  2. 编辑配置文件以启用 HTTPS:
    在配置文件中,您需要设置以下 SSL 相关的指令:

    ♾️ nginx 代码:
    server {
        listen 443 ssl;
        server_name www.xxx.com;  # 替换为您的域名
    
        # SSL 证书文件路径
        ssl_certificate /path/to/fullchain.cer;  # 指向您的证书全链文件
        ssl_certificate_key /path/to/www.xxx.com.key;  # 指向您的私钥文件
    
        # 安全协议和加密套件配置
        ssl_protocols TLSv1.2 TLSv1.3;  # 指定支持的 TLS 版本
        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';  # 强加密套件
        ssl_prefer_server_ciphers on;  # 优先使用服务器的加密套件顺序
        ssl_session_cache shared:SSL:10m;  # 启用 SSL 会话缓存,提升性能
        ssl_session_timeout 10m;  # 会话超时时间
    
        # 启用 HSTS (HTTP Strict Transport Security)
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    
        # 其他服务器配置...
        location / {
            root /path/to/webroot;  # 网站根目录
            index index.html index.htm;
        }
    }

    HSTS (HTTP Strict Transport Security) 是一种安全机制,它要求浏览器只能通过 HTTPS 访问网站,即使用户输入 HTTP 地址或点击 HTTP 链接也会自动重定向到 HTTPS。这有助于防止中间人攻击和 SSL 剥离攻击。

  3. 重新加载 Nginx 配置:
    修改配置文件后,您需要重新加载 Nginx 以应用这些更改。您可以使用以下命令来重新加载 Nginx:

    ♾️ bash 代码:
    sudo systemctl reload nginx

    或者,如果您不使用 systemctl,可以使用:

    ♾️ bash 代码:
    sudo service nginx reload
  4. 测试 HTTPS 连接:
    配置完成后,您应该通过浏览器访问 https://www.xxx.com 来测试您的网站是否正确地使用 SSL 证书。您还可以使用工具如 SSL Labs' SSL Test 来评估您服务器的 SSL 配置安全性。
注意: 请务必妥善保管您的私钥文件 (www.xxx.com.key),不要泄露给他人。私钥是用于解密 HTTPS 通信的关键,如果泄露,攻击者可能会截获和篡改您网站的加密通信。

确保您的 SSL 证书文件 (fullchain.cerwww.xxx.com.key) 路径正确,并且 Nginx 用户有权访问这些文件。这些步骤将帮助您确保通过 HTTPS 提供安全、加密的网站访问。

acme.sh 命令详解

1. 安装 acme.sh

安装 acme.sh 最简单的方法是使用一键安装命令,同时需要提供一个邮箱地址用于接收证书快到期的提醒:

♾️ bash 代码:
curl https://get.acme.sh | sh -s email=my@example.com

安装完成后,acme.sh 将被安装到 ~/.acme.sh/ 目录。安装脚本会自动创建 alias 和 cronjob 以便定期检查和更新证书。

2. 生成证书

acme.sh 支持多种验证方式,包括 HTTP 和 DNS 验证。

2.1 HTTP 方式

这种方式需要您的网站可以通过 HTTP(S) 访问。acme.sh 会在网站根目录下创建一个隐藏文件夹 .well-known/acme-challenge/,并放置验证文件。

如果网站根目录为 /home/wwwroot/mydomain.com/,使用以下命令生成证书:

♾️ bash 代码:
acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com/

或者,如果使用 Apache 或 Nginx,acme.sh 可自动完成验证:

♾️ bash 代码:
acme.sh --issue -d mydomain.com --apache
# 或者
acme.sh --issue -d mydomain.com --nginx

如果 80 端口未被占用,也可以使用 standalone 模式:

♾️ bash 代码:
acme.sh --issue -d mydomain.com --standalone

2.2 DNS 方式

如果无法使用 HTTP 或需要泛域名证书,可以使用 DNS 方式。首先,配置 API Key 以允许 acme.sh 自动添加 TXT 记录。以 DNSPod 为例:

♾️ bash 代码:
export DP_Id="your_id"
export DP_Key="your_token"

然后使用以下命令生成证书:

♾️ bash 代码:
acme.sh --issue --dns dns_dp -d mydomain.com -d *.mydomain.com

3. 安装证书

查看证书信息:

♾️ bash 代码:
acme.sh --list

安装证书到指定目录并设置重载命令:

♾️ bash 代码:
acme.sh --install-cert -d mydomain.com \
--key-file /etc/nginx/ssl/mydomain.com.key \
--fullchain-file /etc/nginx/ssl/fullchain.cer \
--reloadcmd "service nginx force-reload"

4. 更新证书

acme.sh 会自动更新快到期的证书。若需手动更新,可以使用:

♾️ bash 代码:
acme.sh --renew -d mydomain.com

5. 更新 acme.sh

这一小节介绍如何将 acme.sh 更新到最新版本,以及如何启用自动更新。

更新 acme.sh 到最新版本:

♾️ bash 代码:
acme.sh --upgrade

启用自动更新:

♾️ bash 代码:
acme.sh --upgrade --auto-upgrade

6. 高级用法

这一小节介绍 acme.sh 的一些高级功能,如生成 ECC 证书、启用 OCSP Must Staple、IPv6 支持等。

acme.sh 支持多种高级功能,如 ECC 证书、OCSP Must Staple、IPv6 支持等。更多用法可通过 acme.sh --help 查看。

7. 调试错误

如果在使用 acme.sh 的过程中遇到问题,这一小节提供了一些调试和解决错误的方法。

如遇问题,可开启调试模式:

♾️ bash 代码:
acme.sh --issue --debug -d mydomain.com

如果 DNS 方式验证超时,可能需要配置 HTTP(S) 代理:

♾️ bash 代码:
export http_proxy="http://localhost:1080"
export https_proxy="http://localhost:1080"

然后重新执行命令。

常见问题

  1. 证书续期失败怎么办?

    首先,检查您的网站是否可以正常访问,并确保 acme.sh 的验证方式配置正确。如果使用 DNS 验证,请检查 API 密钥是否有效,并且 DNS 记录是否正确添加。

    如果问题仍然存在,您可以尝试删除旧的证书并重新生成:

    ♾️ bash 代码:
    acme.sh --remove -d mydomain.com
    acme.sh --issue -d mydomain.com --webroot /path/to/webroot
  2. Nginx 配置文件错误导致无法启动怎么办?

    如果 Nginx 因配置文件错误无法启动,您可以使用以下命令来检查配置文件的语法:

    ♾️ bash 代码:
    sudo nginx -t

    该命令会输出配置文件的错误信息,根据提示修改错误的配置项即可。

  3. 如何撤销证书?

    如果您的私钥泄露或证书不再需要,您应该及时撤销证书以防止被滥用。使用以下命令撤销证书:

    ♾️ bash 代码:
    acme.sh --revoke -d mydomain.com

    然后,从您的 Web 服务器配置中移除证书和私钥文件,并重新加载服务器。

现在已有 0 条评论,3 人点赞
酒笙
Comment
发表
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主