博客 / Linux/ Nginx服务器如何配置使用Namecheap的免费SSL证书?

Nginx服务器如何配置使用Namecheap的免费SSL证书?

Nginx服务器如何配置使用Namecheap的免费SSL证书?

前言

为网站启用 SSL/TLS 证书是保障数据传输安全的重要步骤。Namecheap 等域名注册商有时会提供免费的 SSL 证书。本文将介绍如何在 Nginx 服务器上配置使用此类证书。

请注意,启用 SSL 会略微增加服务器的 CPU 和内存开销,但对于现代服务器而言,这点开销通常是可接受的。

第一部分:申请证书

以下步骤需要在你的服务器上通过 SSH 执行。请将示例中的域名 xiaohost.com 替换为你自己的域名。

1. 生成私钥和 CSR 文件

首先,进入 Nginx 配置目录(路径可能因安装方式而异):

cd /usr/local/nginx/conf/

生成一个 2048 位的 RSA 私钥文件:

openssl genrsa -out xiaohost.pem 2048

成功后会显示类似以下信息:

Generating RSA private key, 2048 bit long modulus
.....+++
.+++
e is 65537 (0x10001)

接着,使用此私钥生成证书签名请求(CSR)文件:

openssl req -new -key xiaohost.pem -out xiaohost.csr

根据提示填写信息。以下是一个示例,请根据你的实际情况修改:

Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:SiChuan
Locality Name (eg, city) []:ChengDu
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Xiao Host
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:youquso.com
Email Address []:admin@youquso.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

重要提示Common Name 必须填写你要申请证书的准确域名(例如 blog.youquso.com)。www.blog.youquso.comblog.youquso.com 被视为两个不同的域名,如果需要同时覆盖,通常需要在后续步骤中选择多域名证书或在申请时指定。

2. 提交 CSR 到 Namecheap

查看并复制 CSR 文件内容:

cat xiaohost.csr

输出内容以 -----BEGIN CERTIFICATE REQUEST----- 开头,以 -----END CERTIFICATE REQUEST----- 结尾。请复制这之间的全部内容(包括首尾两行)。

登录 Namecheap 后台,找到 SSL 证书管理页面,激活你的免费 SSL 证书。在提交 CSR 时,由于可能没有直接的“Nginx”选项,请在下拉菜单中选择“Other”。将复制的 CSR 内容粘贴到指定区域。

选择用于验证的邮箱(建议使用域名 WHOIS 信息中的邮箱),然后按照流程操作。你的邮箱会收到一封验证邮件,点击其中的链接完成域名所有权验证。

验证通过后,通常几分钟到几小时内,你就会收到来自证书颁发机构(如 Comodo/Sectigo)的邮件,其中包含你的数字证书文件。

第二部分:配置 Nginx 使用证书

1. 准备证书文件

下载邮件附件中的证书压缩包(例如 xiaohost_com.zip),上传到服务器的 /usr/local/nginx/conf/ 目录并解压。

通常,你需要将中间证书(CA Bundle)追加到你的主证书文件中。假设你的主证书文件是 xiaohost_com.crt,中间证书文件是 PositiveSSLCA.crt,则执行:

cat PositiveSSLCA.crt >> xiaohost_com.crt

这个命令将中间证书内容追加到主证书文件末尾。请确保你使用的是正确的文件名。

2. 修改 Nginx 配置文件

编辑你的 Nginx 虚拟主机配置文件(例如 nginx.confsites-available/your-site)。以下是一个配置示例,展示了如何为站点启用 SSL:

server {
    listen 80;
    listen 443 ssl; # 现代 Nginx 推荐写法,同时监听 80 和 443 端口
    server_name www.blog.youquso.com;

    # SSL 配置
    ssl_certificate /usr/local/nginx/conf/xiaohost_com.crt;
    ssl_certificate_key /usr/local/nginx/conf/xiaohost.pem;
    # 可选:提高安全性,启用更严格的 SSL 协议和加密套件
    # ssl_protocols TLSv1.2 TLSv1.3;
    # ssl_ciphers HIGH:!aNULL:!MD5;

    root /home/wwwroot/youquso.com/;
    index index.html index.htm index.php;

    # 将 HTTP 请求重定向到 HTTPS(可选但推荐)
    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }

    location ~ .php$ {
        try_files $uri =404;
        fastcgi_pass unix:/tmp/php-cgi.sock;
        fastcgi_index index.php;
        fastcgi_param HTTPS $https if_not_empty; # 更通用的传递 HTTPS 状态的方式
        include fastcgi_params; # 通常是 fcgi.conf 或 fastcgi_params
    }

    # 其他 location 块(静态文件缓存等)...
    location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;
    }

    access_log /home/wwwlogs/blog.youquso.com.log;
}

# 可选:将裸域名重定向到带 www 的 HTTPS 地址
server {
    listen 80;
    server_name youquso.com;
    return 301 https://www.blog.youquso.com$request_uri;
}

配置说明与更新

  • 监听端口:现代 Nginx 版本推荐使用 listen 443 ssl; 替代旧的 ssl on; 指令。示例中同时监听了 80 和 443 端口。
  • 证书路径ssl_certificatessl_certificate_key 指令需要指向你实际的证书文件和私钥文件绝对路径。
  • HTTP 重定向:示例中添加了将 HTTP 请求自动重定向到 HTTPS 的规则,这是安全最佳实践。
  • PHP FastCGI 参数fastcgi_param HTTPS $https if_not_empty; 是更可靠地告知 PHP 应用当前连接使用 HTTPS 的方法。
  • 请根据你的实际目录结构、域名和 PHP 处理配置修改上述示例。

3. 测试并重启 Nginx

在保存配置文件后,务必先测试配置语法是否正确:

/usr/local/nginx/sbin/nginx -t

如果输出显示“syntax is ok”和“test is successful”,则说明配置无误。

然后,平滑重启 Nginx 以使配置生效:

/usr/local/nginx/sbin/nginx -s reload

或者使用你系统对应的服务管理命令,例如:

systemctl reload nginx

原文中使用的 kill -HUP 方式也是可行的,但使用 Nginx 自带的 -s reload 信号或系统服务命令是更标准的方法。

总结

完成以上步骤后,你的网站应该已经可以通过 HTTPS 安全访问了。你可以使用在线工具(如 SSL Labs 的 SSL Server Test)来检测你的 SSL 配置是否安全、完整。

请注意,本文基于较旧的流程进行了更新和修正。Namecheap 的后台界面和证书颁发流程可能随时间变化,但核心步骤(生成 CSR、提交验证、配置 Nginx)是通用的。务必保管好你的私钥文件(.pem),切勿泄露。

  1. avatar
    maillot radioshack

    看不懂,只能支持下博主了

    1. avatar
      老牛博客

      这个是配置SSL的

  2. avatar
    麦杰机械

    马克一下

回复 maillot radioshack 取消回复

您的邮箱不会公开。必填项已用 * 标注。