找回密码
 立即注册
查看: 439|回复: 0

[linux] 如何在 Centos 7.6 上配置 Nginx SSL

[复制链接]

66

主题

3

回帖

284

积分

管理员

积分
284
QQ
发表于 2024-5-16 12:51:57 | 显示全部楼层 |阅读模式
在 Nginx 上配置 SSL 可以显著提升网站的安全性。以下是一个详细的教程,介绍如何在 Centos 7.6 上使用 Let's Encrypt 为 Nginx 配置 SSL。

一、安装 Certbot 和 Nginx

1. 确保系统已更新:
  1. syum update -y
复制代码


2. 安装 EPEL 存储库:
  1. sudo yum install -y epel-release
复制代码


3. 安装 Nginx 和 Certbot:
  1. sudo yum install -y nginx certbot Python2-certbot-nginx
复制代码


4. 启动 Nginx 并设置为开机自启:
  1. sudo systemctl start nginx
  2. sudo systemctl enable nginx
复制代码

二、配置防火墙

1. 打开 HTTP 和 HT端口:
  1. sudo firewall-cmd --permanent --zone=public --add-service=http
  2. sudo firewall-cmd --permanent --zone=public --add-service=https
  3. sudo firewall-cmd --reload
复制代码


三、获取 SSL 证书

1. 运行 Certbot 获取 SSL 证书并自动配置 Nginx:
  1. sudo certbot --nginx
复制代码


2. 根据提示输入你的电子邮件地址,同意服务条款,并输入你的域名。例如 `hostssss.com` 和 `www.hostssss.com`。

3. Certbot 将会自动修改你的 Nginx 配置文件以启用 SSL,并重新加载 Nginx。

四、手动配置 SSL(如果需要手动修改配置)

如果你需要手动修改或创建 Nginx 配置文件来启用 SSL,可以按照以下步骤操作:

1. 打Nginx 配置文件(假设你的网站配置文件在 `/etc/nginx/conf.d` 目录下):
  1. sudo vim /etc/nginx/conf.d/your_site.conf
复制代码


2. 编辑配置文件,使其包含以下内容:
nginx
  1. server {
  2.     listen 80;
  3.     server_name your_domain.com www.hostssss.com;

  4.     # 重定向到 HTTPS
  5.     location / {
  6.         return 301 https://$host$request_uri;
  7.     }
  8. }

  9. server {
  10.     listen 443 ssl; server_name your_domain.com www.hostssss.com;

  11.     ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
  12.     ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
  13.     ssl_protocols TLSv1.2 TLSv1.3;
  14.     ssl_prefer_server_ciphers on;
  15.     ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256";
  16.     ssl_session_cache shared:SSL:10m;
  17.     ssl_session_timeout 10m;
  18.     ssl_dhparam /etc/ssl/certs/dhparam.pem;

  19.     root /usr/share/nginx/html;
  20.     index index.html index.htm index.php;

  21.     location / {
  22.         try_files $urri/ =404;
  23.     }

  24.     location ~ \.php$ {
  25.         try_files $uri =404;
  26.         fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
  27.         fastcgi_index index.php;
  28.         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  29.         include fastcgi_params;
  30.     }

  31.     location ~ /\.ht {
  32.         deny all;
  33.     }
  34. }
复制代码

  - 将 `your_domain.com` 替换为你的实际域名。

3. 创建一个强大的 Diffie-Hellman 参数文件:
  1. sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
复制代码


4. 检查 Nginx 配置文件语法:
  1. sudo nginx -t
复制代码


5. 重启 Nginx 使配置生效:
  1. sudo systemctl restart nginx
复制代码


五、自动续订 SSL 证书
tbot 可以自动续订证书。要验证续订功能,运行以下命令:
  1. sudo certbot renew --dry-run
复制代码


确保这个命令执行没有错误,然后添加一个 cron 任务来自动续订证书。打开 cron 配置:
  1. sudo crontab -e
复制代码


添加以下行:
  1. 0 0 * * * /usr/bin/certbot renew --quiet
复制代码

这将设置 Certbot 每天午夜尝试续订证书。

六、验证 SSL 配置

打开浏览器,访问 `https://www.hostssss.com/`,并检查 SSL 证书是否生效。你可以使用 [SSL Labs](https://www.ssllabs.com/ssltest/) 这样的工具来进一步验证你的 SSL 配置是否安全。

结论:到此为止,你已经在 CentOS 7.6 上使用 Let's Encrypt 为 Nginx 配置了 SSL。确保你的 Nginx 配置正确,并且 Certbot 的自动续订功能运行正常。这样,你的网站将安全地使用 HTTPS 进行通信。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-5 02:28 , Processed in 0.065691 second(s), 25 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表