从letsencrypt申请https证书踩坑记

本文记录了在使用letsencrypt获取HTTPS证书过程中遇到的问题及解决办法,包括DNS配置、验证过程中的常见错误和解决策略,旨在帮助读者顺利实现网站的安全加密。
今天成功用let's encrypt 上搞定了https证书,整个过程参考这篇文章 https://www.cnblogs.com/teamblog/p/6219204.html
结合本人在制作ssl证书的过程中踩的一些坑说一些注意点
整个流程如下
1.在服务器上运行一个程序获取let's encrypt颁发的证书
2.配置nginx服务器使用生成的证书

正文
1.在服务器运行一个程序获取let's encrypt颁发的证书
  在服务器上运行的程序可以从下面的链接中获取  https://letsencrypt.org/docs/client-options/
         官方推荐使用certbot,但是我的服务器是windows,所以我使用letencrypt-win-simple来生成证书,需要注意的是需要安装.net 4.x才能使用这个程序
         下载好上面的程序后把程序复制到web服务器的静态文件目录下,因为letencrypt会主动发请求获取
          注意点
        a. letencrypt放到外网服务器的nginx的html目录下,在目录执行letencrypt,这样会把从letencrypt.com生成的验证文件放到本目录下,避免了复制文件的麻烦
        b. nginx必须要监听80端口 ,不能监听其它端口,因为letencrypt.com只会访问http://[domainname]/.well-known/[cert_file] 来验证域名所有权
        c. 验证过程中输入的邮箱不会发邮件确认所有权
        2. 配置nginx使用证书 
           配置的过程 参考这篇文章 https://www.cnblogs.com/teamblog/p/6219204.html
        服务器使用nginx反向代理 nodejs 服务,其中nginx是https,而nodejs服务在内网非https,这就涉及到了 https反向代理http的问题, 根据经验使用下面的配置
            upstream remoteservername{
                server [remoteserverip]:8080;
            }
            server {
                listen       443 ssl;
                server_name  [realservername];
                ssl_certificate      path/to/cert .pem;
                ssl_certificate_key  path/to/key;
                ssl_session_cache    shared:SSL:1m;
                ssl_session_timeout  5m;
                ssl_ciphers  HIGH:!aNULL:!MD5;
                ssl_prefer_server_ciphers  on;
                location / {
                    root   html;
                    index  index.html index.htm;
                    proxy_pass   http://remoteservername;
                }
            }
        上面的配置会导致502错误,解决方案是
            upstream remoteservername{
                server [remoteserverip]:8080;
            }
            server {
                listen       443 ssl;
                server_name  [realservername];
                ssl_certificate      path/to/cert .pem;
                ssl_certificate_key  path/to/key;
                ssl_session_cache    shared:SSL:1m;
                ssl_session_timeout  5m;
                ssl_ciphers  HIGH:!aNULL:!MD5;
                ssl_prefer_server_ciphers  on;
                location / {
                    root   html;
                    index  index.html index.htm;
                    proxy_pass   http:// remoteservername;
                      proxy_read_timeout 1800;
                    proxy_connect_timeout 1800;
                }
            }
        加上proxy_read_timeout 1800;
        proxy_connect_timeout 1800;
        ### 如何使用 Let's Encrypt 申请 SSL 证书 Let’s Encrypt 是一种免费、开放且自动化的 CA(证书颁发机构),它提供了一种简单的方式来为您的网站启用 HTTPS 协议。以下是关于如何申请 Let’s Encrypt SSL 证书的具体方法。 #### 准备工作 在开始之前,您需要确保服务器满足以下条件: - 安装有支持的 Web 服务器软件(如 Apache 或 Nginx)。 - 域名已解析到目标服务器 IP 地址。 - 对于某些安装方式,可能还需要具备 SSH 访问权限以及 root 权限。 #### 方法一:通过 Certbot 工具申请证书 Certbot 是官方推荐用于管理 Let’s Encrypt 证书的一个工具,其功能强大并易于操作。以下是具体步骤: 1. **安装 Certbot** 首先,在您的服务器上安装 Certbot 及对应插件。例如对于 Ubuntu 系统可以运行如下命令完成安装: ```bash sudo apt update && sudo apt install certbot python3-certbot-apache ``` 2. **生成证书** 使用 Standalone 插件模式或者 Webroot 插件模式验证域名所有权从而获得证书文件。下面展示了一个基于交互式的例子: ```bash sudo certbot certonly --standalone -d example.com -d www.example.com --noninteractive --agree-tos --email admin@example.com ``` 这里 `-d` 参数指定要保护的域名称;`--agree-tos` 表明同意条款服务协议;而 `admin@example.com` 则作为联系邮箱地址以便后续通知更新事项等用途[^3]。 3. **配置 Web 服务器** 获得证书之后就需要将其集成至实际使用的 web server 中去。如果是 nginx,则编辑站点对应的虚拟主机配置文件加入类似这样的设置片段: ```nginx server { listen 443 ssl; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ... } ``` 注意路径应指向由 certbot 自动生成的实际位置,并确认无误后再重启服务生效更改[^4]。 #### 方法二:手动执行脚本申请 如果不想依赖第三方程序也可以直接克隆官方仓库自行构建环境来进行认证流程。不过这种方式相对较为繁琐不建议初学者尝试除非特殊需求场景下才考虑采用这种方法[^3]。 --- ### 总结 无论是利用便捷高效的 Certbot 自动化解决方案还是深入探索底层机制的手工实现途径都可以成功获取来自 Let’s Encrypt 提供的有效期内可信赖的安全传输层加密凭证资源。根据个人技术水平偏好选择适合自己的实践路线即可轻松达成目的。
        评论
        成就一亿技术人!
        拼手气红包6.0元
        还能输入1000个字符
         
        红包 添加红包
        表情包 插入表情
         条评论被折叠 查看
        添加红包

        请填写红包祝福语或标题

        红包个数最小为10个

        红包金额最低5元

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

        抵扣说明:

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

        余额充值