如何申请免费SSL证书,并部署到Nginx?

本文介绍了LetsEncrypt提供的免费SSL/TLS证书服务,重点讲解了如何方便地申请证书,以及如何将其部署到Nginx服务器以确保网站安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        HTTPS是一种通过加密来保护网络通信安全的协议,对于保护网站和用户数据的安全至关重要。而要实现HTTPS安全通信,就必须要有SSL/TLS证书,传统上,获取和配置SSL/TLS证书需要一定的成本和技术知识,这对于小型网站、个人博客等资源有限的实体来说可能是一个障碍。因此申请免费的SSL证书就显得非常的有必要。

        申请免费的SSL证书有很多种途径,在国内的华为云、阿里云和腾讯云等都可以申请到免费3个月的SSL证书,但这里我们讲的是另一种方式,那就是Let's Encrypt 。为什么选择这种方式呢?因为通过Let's Encrypt 网站申请证书非常方便。

        Let's Encrypt是一个提供免费SSL/TLS证书的服务,旨在使HTTPS加密通信更加普及和易于实现。Let's Encrypt的目标是通过提供免费、自动化和开放的SSL/TLS证书,促进整个互联网的加密。它的证书由现代浏览器所信任,因此网站使用Let's Encrypt证书可以得到与商业SSL证书相同的安全保障,同时也为网站所有者节省了成本。

Let's Encrypt证书的特点包括:

  1. 免费: Let's Encrypt提供的SSL/TLS证书完全免费,没有任何隐藏费用。
  2. 开放: Let's Encrypt的证书管理工具和协议是开放的,任何人都可以访问并使用。
  3. 安全: Let's Encrypt证书采用现代加密算法,提供与商业SSL证书相当的安全性。

接下来我们详细介绍从Lets Encrypt申请证书和发布部署证书的过程:

一、申请证书

(1)申请证书之前,需要准备好用于绑定证书的域名(假如您的域名是:abc.yuming.com)。这个域名必须能够正常访问,也就是说通过浏览器可以正常访问:http://abc.yuming.com 。

(2)打开网站: 来此加密 - Let's Encrypt 在线免费申请SSL证书

(3)点“立即开始”,注册用户。(如果已注册用户,直接点“登录”)

(4)登录之后,选择“申请证书”,之后照着申请证书的指引,一步步完成证书的申请。一般来说,直接按照默认的选项申请就行。

(5)提交申请成功之后,还要进行一次手工验证。验证方式建议选择DNS验证。如下图所示:

(6)在您的域名管理网站,根据系统提示的DNS验证资料,添加一条TXT域名解析记录,完成之后,点击验证。等待验证通过之后证书就申请到手啦。

在申请证书的第二步,如果选择自定义CSR,可以使用以下网站创建CSR文件:SSL在线工具-CSR在线生成-CSR在线创建-证书请求文件生成-SSLeye官网

 从Let's Encrypt网站将证书申请到手之后,可以将证书下载到本地,也有如何部署到tomcat、nginx等几个常见的应用服务器的部署指引。

解压后的证书文件如下:

二、部署证书

接下来我们详细介绍如何将证书部署到nginx。

(1)在nginx根目录下,创建cert目录。并将解压后的所有证书文件,直接上传到这个目录下。(假如nginx根目录为 /usr/local/nginx )

(2)修改nginx的配置文件

server {
        listen       443 ssl;
        server_name  abc.yuming.com;

        ssl_stapling on;
        ssl_stapling_verify on;  

        ssl_certificate      /usr/local/nginx/cert/fullchain.crt;
        ssl_certificate_key  /usr/local/nginx/cert/private.pem;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        #  ssl_ciphers  HIGH:!aNULL:!MD5;
	    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers  on;      

        location / {
            root   html;
            index  index.html index.htm;
        }
    }

(3)测试nginx配置是否正确:nginx -t  ,如果出现下图所示错误,则说明nginx未安装ssl模块,需要安装ssl模块后,再执行配置测试。(如何安装ssl模块,网上很多,这里不说了。)

(4)重新加载配置:nginx -s reload 

三、测试访问

在浏览器中,直接输入:https://abc.yuming.com,如果出现下图所示页面,表示证书部署成功。

<think>我们有两个方法生成证书:1.使用Python调用OpenSSL命令生成;2.使用cryptography库生成。 无论哪种方法,我们都会得到两个文件:私钥(.key)和证书(.crt)。 现在,我们需要将这两个文件部署Nginx服务器上。 步骤: 1. 将生成的私钥和证书文件放到Nginx服务器上的安全目录(通常为/etc/ssl/private和/etc/ssl/certs)。 2. 修改Nginx配置文件(通常位于/etc/nginx/sites-available/或/etc/nginx/conf.d/),为需要HTTPS的server块配置SSL证书路径。 3. 测试Nginx配置重新加载Nginx服务。 详细步骤: 步骤1:放置证书文件 - 将私钥文件(如nginx-selfsigned.key)复制到/etc/ssl/private/目录(注意权限) - 将证书文件(如nginx-selfsigned.crt)复制到/etc/ssl/certs/目录 步骤2:配置Nginx - 打开Nginx配置文件(例如:/etc/nginx/sites-available/default 或为你的站点单独创建的配置文件) - 在server块中配置监听443端口指定证书和私钥的路径。 步骤3:测试重载Nginx - 运行 `sudo nginx -t` 测试配置是否正确 - 如果测试成功,则重载Nginx:`sudo systemctl reload nginx` 下面是一个Nginx配置示例(针对HTTPS):</think># 在Nginx服务器上部署Python生成的SSL证书 下面是将Python生成的SSL证书部署Nginx服务器的完整步骤指南: ## 一、证书文件准备 1. **获取证书文件**: - 私钥文件:`nginx-selfsigned.key` - 证书文件:`nginx-selfsigned.crt` 2. **安全存放证书**: ```bash sudo mkdir -p /etc/ssl/private sudo mkdir -p /etc/ssl/certs # 复制证书文件 sudo cp nginx-selfsigned.key /etc/ssl/private/ sudo cp nginx-selfsigned.crt /etc/ssl/certs/ # 设置安全权限 sudo chmod 600 /etc/ssl/private/nginx-selfsigned.key sudo chown root:root /etc/ssl/private/nginx-selfsigned.key ``` ## 二、Nginx配置HTTPS 编辑Nginx配置文件(通常位于`/etc/nginx/sites-available/default`或`/etc/nginx/conf.d/default.conf`): ```nginx server { listen 443 ssl http2; server_name yourdomain.com; # 替换为您的域名 # SSL证书配置 ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; # SSL协议配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; ssl_prefer_server_ciphers on; # 性能优化 ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; # HSTS安全增强(可选) add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; # 网站根目录配置 root /var/www/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } } # HTTP重定向到HTTPS server { listen 80; server_name yourdomain.com; # 替换为您的域名 return 301 https://$host$request_uri; } ``` ## 三、验证应用配置 1. **测试Nginx配置**: ```bash sudo nginx -t ``` 输出应为:`nginx: configuration file /etc/nginx/nginx.conf test is successful` 2. **重启Nginx服务**: ```bash sudo systemctl restart nginx ``` 3. **验证服务状态**: ```bash sudo systemctl status nginx ``` ## 四、验证SSL证书 1. **浏览器验证**: - 访问 `https://yourdomain.com` - 自签名证书会显示安全警告(预期行为) - 可手动添加安全例外继续访问 2. **命令行验证**: ```bash openssl s_client -connect yourdomain.com:443 -servername yourdomain.com ``` 3. **验证证书和私钥匹配**: ```bash openssl x509 -noout -modulus -in /etc/ssl/certs/nginx-selfsigned.crt | openssl md5 openssl rsa -noout -modulus -in /etc/ssl/private/nginx-selfsigned.key | openssl md5 ``` 两个命令输出的MD5值应相同 ## 五、安全增强配置(可选) ```nginx # 在SSL配置块中添加 ssl_dhparam /etc/ssl/certs/dhparam.pem; # 生成命令: openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 # OCSP装订提高性能 ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; # 安全头信息 add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; ``` ## 六、生产环境建议 1. **替代自签名证书**: ```bash # 使用Certbot获取免费Let's Encrypt证书 sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d yourdomain.com ``` 2. **自动续签证书**: ```bash # 测试续签 sudo certbot renew --dry-run # 添加定时任务(每月执行) sudo crontab -e # 添加行:0 0 1 * * /usr/bin/certbot renew --quiet ``` 3. **证书轮换策略**: - 定期更新证书(建议每3-6个月) - 使用脚本自动化证书更新和Nginx重载 ## 常见问题排查 1. **Nginx启动失败**: - 检查证书路径是否正确 - 验证证书文件权限 - 查看错误日志:`sudo tail -f /var/log/nginx/error.log` 2. **浏览器安全警告**: - 自签名证书会显示警告(正常现象) - 生产环境应使用受信任CA证书 3. **HTTPS重定向循环**: - 检查`$host`变量是否正确 - 确保没有多个重定向规则冲突 > 提示:自签名证书仅适用于测试环境,生产环境建议使用[Let's Encrypt](https://letsencrypt.org/)免费证书或商业CA证书[^1][^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值