Let's Encrypt颁发的证书是目前生产的大多数浏览器都信任的,您只需下载并运行Let's Encrypt客户端来生成一个证书即可。

在颁发证书之前,需要验证您的域名的所有权。首先,在您的主机上运行的Let's Encrypt客户端将创建一个临时文件,其中包含所需的信息。Let's Encrypt验证服务器发出HTTP请求来检索文件并验证令牌,该令牌用于验证您的域名的DNS记录是否解析为运行Let's Encrypt客户端的服务器。

下文介绍了配置NGINX Plus,获取证书以及设置证书自动续订的步骤。

下载并安装Certbot

您需要做的第一件事是下载并安装Let's Encrypt客户端certbot:

# yum update
# yum install -y git
# git clone https://github.com/certbot/certbot /opt/letsencrypt

注意:所有必需的依赖关系都随同安装certbot,包括Augeas,gcc,Python和完整的CA证书。请确认这符合您的安全策略。已安装的依赖关系的确切列表位于certbot 源代码中。

创建加密临时文件模板

Let's Encrypt客户端会在webroot-path /.well-known/acme-challenge/中创建一个临时文件,其中包含让我们的加密服务器使用的令牌,以验证您是否拥有您试图获得免费SSL证书的域。本文的webroot-path是 /var/www/letsencrypt

我们首先使用GitHubGist创建一个带有让我们加密的证书的模板文件。如果没有模板,我们必须在Let's Encrypt命令行中指定值。

1. 创建Let's Encrypt存储临时文件的目录,并设置所需的权限:

# cd /var/www
# mkdir letsencryp
# chgrp www-data letsencrypt

2. 创建 /etc/letsencrypt/configs/my-domain.conf文件,其中my-domain是完全域名(如www.example.com)。复制Gist内容,并在domains和email字段中设置适当的值。

# the domain we want to get the cert for;
# technically it's possible to have multiple of this lines, but it only worked
# with one domain for me, another one only got one cert, so I would recommend
# separate config files per domain.
domains = my-domain
# increase key size rsa-key-size = # Or
# the current closed beta (as of -Nov-) is using this server server = https://acme-v01.api.letsencrypt.org/directory
# this address will receive renewal reminders email = my-email
# turn off the ncurses UI, we want this to be run as a cronjob text = True
# authenticate by placing a file in the webroot (under .well-known/acme-challenge/)
# and then letting LE fetch it authenticator = webroot webroot-path = /var/www/letsencrypt/

允许加密访问临时文件

现在我们修改NGINX Plus配置,让Let's Encrypt来访问临时文件。

将此location块添加到HTTP通信的虚拟服务器:

server {
  listen default_server;
  server_name my-domain;
  location /.well-known/acme-challenge {
  root /var/www/letsencrypt;
}
# ...
}

验证配置文件在语法上是否有效并重新启动NGINX:

# nginx -t && nginx -s reload

请求证书

现在,一切都设置好了,我们要求证书。突出显示的消息确认我们已成功获取NGINX的证书和关联文件,Let's Encrypt存储在/etc/ letsencrypt/live/my-domain中。证书文件是 fullchain.pem和privkey.pem。

# cd /opt/letsencrypt
# ./certbot-auto --config /etc/letsencrypt/configs/my-domain.conf certonly
Updating letsencrypt and virtual environment dependencies......
Requesting root privileges to run with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt --config /etc/letsencrypt/configs/my-domain.conf certonly
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/my-domain/fullchain.pem. Your cert will expire on date. To obtain a new version of the certificate in the future, simply run Let's Encrypt again. ...

指向NGINX Plus的证书

将证书和密钥添加到serverHTTP通信的块中:

server {
listen ssl default_server;
server_name my-domain;
  ssl_certificate /etc/letsencrypt/live/my-domain/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/my-domain/privkey.pem;
  # ... }

验证配置文件在语法上是否有效,然后重新启动NGINX Plus加载新证书:

# nginx -t && sudo nginx -s reload

自动更新加密证书

加密证书只有90天有效,之后需要更新。这个过程可以很容易地使用cron工作自动化。

创建一个如下所示的简单脚本来更新证书,并在成功时重新启动NGINX Plus。将其另存为renew-letsencrypt.sh并保存在cron有权限的目录中。

#!/bin/sh

cd /opt/letsencrypt/ ./certbot-auto --config /etc/letsencrypt/configs/my-domain.conf certonly
if [ $? -ne ] then ERRORLOG=`tail /var/log/letsencrypt/letsencrypt.log` echo -e "The Let's Encrypt cert has not been renewed! \n \n" \ $ERRORLOG
else nginx -s reload fi
exit

创建/ var / log / letsencrypt /如果不存在。

运行crontab -e并输入此字符串每两个月运行脚本:

   JAN,MAR,MAY,JUL,SEP,NOV * /path/to/renew-letsencrypt.sh

至此,申请证书完毕~

假定用户需要配置网站 https://example.com 。开发者希望用户在浏览器中输入网址时,直接键入www.example.com 即可通过 HTTPS 协议安全访问。此时用户输入的 www.example.com 请求转发流程如下:

1、该请求以 HTTP 协议传输,通过 VIP 访问负载均衡监听器的 80 端口,并被转发到后端云服务器的 8080 端口。

2、通过在腾讯云后端服务器的 nginx 上配置 rewrite 操作,该请求经过 8080 端口,并被重写到 https://example.com 页面。

3、此时浏览器再次发送 https://example.com 请求到相应的 HTTPS 站点,该请求通过 VIP 访问负载均衡监听器的 443 端口,并被转发到后端云服务器的 80 端口。

至此,请求转发完成。 该操作在浏览器用户未感知的情况下,将用户的 HTTP 请求重写为更加安全的 HTTPS 请求。

为实现以上请求转发操作,用户可以对后端服务器做如下配置:

server{
  listen ;
  server_name example.qcloud.com;
  location / { #! customized_conf_begin; client_max_body_size 200m; rewrite ^/.(.*) https://$host/$1 redirect; }
}

或者在nginx新版本中,采用推荐的301重定向配置方法,将nginx http页面重定向到https页面:

server {
  listen ;
  server_name example.qcloud.com;
  return https://$server_name$request_uri;
} server {
  listen ssl;
  server_name example.qcloud.com;
  [....]
}

Let's Encryt免费SSL证书申请[我司方案]的更多相关文章

  1. StartSSL免费SSL证书申请和账户注册完整过程

    StartSSL算是比较早提供免费SSL证书的第三方提供商,我们可以免费申请且免费续期使用到有需要HTTPS网址的用户.关于网站使用SSL证书主要还是因为谷歌在向导说明中提到如果一个网站使用到SSL证 ...

  2. 分享一个免费SSL证书申请网站,给网站开启https协议 | 张戈博客

    这些天,由于公司的业务需求,接触到了ssl证书和https协议.博客前几篇文章也分享了在WEB服务器上安装SSL证书,为网站开启https协议的教程,感兴趣的童鞋可以前往查看相关文章: <Lin ...

  3. 阿里云免费SSL证书申请与安装使用(IIS7)

    准备: 阿里云已完成备案的域名一个 第一步:免费SSL证书申请 登陆阿里云平台,在域名控制台下,选择你的域名,点击“SSL”证书,如图所示 再跳转后的页面,选择“单域名免费证书”,并补全域名,非二级域 ...

  4. 【转】阿里云免费SSL证书申请与安装使用(IIS7)

    阅读目录 准备: 第一步:免费SSL证书申请 第二步:证书导入 第三步:分配服务器证书 最后一步:访问测试 回到顶部 准备: 阿里云已完成备案的域名一个 回到顶部 第一步:免费SSL证书申请 登陆阿里 ...

  5. 新版startssl 免费SSL证书申请 (实测 笔记 https http2 必要条件)

    简单说明: 目前多个大型网站都实现全站HTTPS,而SSL证书是实现HTTPS的必要条件之一. StartSSL是StartCom公司旗下的.提供免费SSL证书服务并且被主流浏览器支持的免费SSL.包 ...

  6. 免费ssl证书申请和在IIS上启用https的使用教程

    因为微信小程序开发涉及到ssl证书,所以折腾了几天的这个. 非常感谢”亚洲诚信-TrustAsia“公司的售后工程师黄工(QQ2355718943 TEL:021-58895880-663)提供的技术 ...

  7. StartCom免费ssl证书申请以及在Tomcat环境中的配置

    提示:建议以下操作不使用谷歌浏览器(该网站的证书不识别...),可以看到我的截图中谷歌换成了ie(没装火狐)...建议该申请使用火狐 前面介绍了下自签名的ssl证书,虽然可以实现https协议访问,但 ...

  8. 免费SSL证书申请及部署实践

    网络上关于如何签发免费SSL证书的博文一大片,但是真正操作起来的能让新手不迷惑的却很少,很多操作步骤受限于国内无法访问外网的阻碍,导致无法真正实施成功. 实际上,关于申请免费SSL证书主要涉及两大部分 ...

  9. 阿里云-免费SSL证书申请及验证步骤

    1.登录阿里云管理控制台,在搜索栏输入ssl,选择第一个SSL证书控制台回车即可 2.点击右上角的购买证书 3.选择购买最后一个品牌 4.选择增强型OV SSL 5.选中后会自动弹出免费型DV SSL ...

随机推荐

  1. git 和github简介

    关于github不清楚的可以百度, 在这里,可以创建一个新的仓库 点击Create repository后会出现下面这些信息,其中第一块是仓库的url链接 第二块是你在本地目录中创建一个READEME ...

  2. webpack 配置之入门一

    webpack 是一个现代 Javascript 应用程序的模块打包器(module bundler ),它里面的功能比较多,核心模块可分为模块打包.代码分割与按需加载.这里只简单讲解下 webpac ...

  3. 【线段树】[Luogu P4198]楼房修建

    显然要维护斜率区间单调递增 并且第一个必选,后一个比前一个选中的斜率大的必选 考虑如何合并两个区间 我们维护一个least值,least这个值必选,且之后选的都必须严格大于least,Push_Up的 ...

  4. Linux下Qt调用共享库文件.so

    修改已有的pro文件,添加如下几句: INCLUDEPATH += /home/ubuntu/camera/camera/LIBS += -L/home/ubuntu/camera/camera -l ...

  5. WordPress .gitignore

    # ----------------------------------------------------------------- # .gitignore for WordPress @salc ...

  6. 物理像素,逻辑像素,解决1px的问题

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  7. leetcode-数组的相对排序

    Python解法: def relativeSortArray(arr1, arr2): arr = [0 for _ in range(110)] new = [] for a in range(l ...

  8. leetcode-158周赛-5222-分割字符串

    题目描述: 自己的提交: class Solution: def balancedStringSplit(self, s: str) -> int: if not s:return 0 res ...

  9. CF 848E(动态规划+分治NTT)

    传送门: http://codeforces.com/problemset/problem/848/E 题解: 假设0-n一定有一条边,我们得到了一个方案,那么显然是可以旋转得到其他方案的. 记最大的 ...

  10. PHP setrawcookie() 函数

    定义和用法 setrawcookie() 函数不对 cookie 值进行 URL 编码,发送一个 HTTP cookie. cookie 是由服务器发送到浏览器的变量.cookie 通常是服务器嵌入到 ...