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. string中的stringstream

    博客: 加速:ios::sync_with_stdio(false); 举个例子: 題目:输入的第一行有一个数字 N 代表接下來有 N 行资料,每一行资料里有不固定个数的整数(最多20个,每行最大20 ...

  2. SharpDx

    layout category title permalink posts_by_category SharpDX SharpDX 系列 /post/sharpdx

  3. Unity3d -- Collider(碰撞器与触发器)

    (2d与3d的Collider可以相互存在,但是无法相互协作,如2d是无法检测3d的,反之,一样) 在目前掌握的情况分析,在Unity中参与碰撞的物体分2大块:1.发起碰撞的物体.2.接收碰撞的物体. ...

  4. linux 下无法输入# 显示为£

    在键盘布局里面,(Keyboard Layout)设置为中国,汉语.解决问题

  5. python 将字符串转换成字典dict

    JSON到字典转化:>>>dictinfo = json.loads(json_str) 输出dict类型 字典到JSON转化:>>>jsoninfo = json ...

  6. socket 进程通讯理解

    [转]https://blog.csdn.net/andrewgithub/article/details/81613120 正如可以给fopen的传入不同参数值,以打开不同的文件.创建socket的 ...

  7. NOIp2018集训test-9-1(pm)

    欢乐%你赛,大家都AK了. 1. 小澳的方阵 吸取了前几天的教训,我一往复杂的什么二维树状数组上想就立刻打住阻止自己,就可以发现它是超级大水题了.记录每一行每一列最后一次的修改,对每个格子看它所在行和 ...

  8. NX二次开发-UFUN体找边UF_MODL_ask_body_edges

    NX11+VS2013 #include <uf.h> #include <uf_ui.h> #include <uf_modl.h> #include <u ...

  9. NX二次开发-对话框加锁UF_UI_lock_ug_access

    VC/MFC调用UG Dialog要进入加锁状态 加锁 UF_UI_lock_ug_access ( UF_UI_FROM_CUSTOM ); 此处为UF_UI_select的函数 解锁 UF_UI_ ...

  10. 图片和base64 二进制相互转换

    package com.xldz.xlworkbench.util; import java.awt.image.BufferedImage; import java.io.ByteArrayInpu ...