http站点华丽转变成Let#39sencryptSSL证书的使用教程(图)

无论是企业网站还是个人博客,我们都不希望用户在浏览时出现莫名其妙的广告。这时候HTTPS/SSL的作用就体现出来了。

本文主要介绍免费Let's Encrypt颁发的HTTPS/SSL证书的使用ssl证书申请流程,即免费免费的Let's Encrypt SSL证书使用教程。

Let's encrypt简介

Let's Encrypt 是 ISRG(互联网安全研究组)提供的免费 SSL 项目。Let's Encrypt 现在由 Linux 基金会托管。它有一个很好的背景。它由 Mozilla、Cisco、Akamai、IdenTrust 和 EFF 等组织发起。现在它得到了谷歌和Facebook等大公司的支持和赞助。管理证书并将您的 http 站点华丽地转换为 Https 站点。

http站点华丽转变成Let#39sencryptSSL证书的使用教程(图)

获取 Let's encrypt 证书

用户可前往Let's encrypt自行注册、认证、配置、下载、安装。需要一定的经验和英文阅读能力,需要做大量的配置工作。

也可以通过小软件快速申请Let's encrypt证书。

Easy HTTPs软件是上海浙淘科技开发的一款快速申请Let's encrypt安全证书的软件。通过Easy HTTPs软件管理Let's Encrypt证书,全可视化引导式操作,所有操作步骤均有中文提示和引导。同时完全基于B/S架构。开发者只需输入域名并验证域名即可完成SSL安全证书的签发、更新和下载。颁发的证书为可信证书,为用户网站数据提供安全保护。

http站点华丽转变成Let#39sencryptSSL证书的使用教程(图)

接下来介绍申请Let's encrypt证书的流程:

安装 Certbot 客户端

yum install certbot

获得证书

$ certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com

此命令将为这两个域名生成证书。使用 --webroot 模式将在 /var/www/example 中创建一个 .well-known 文件夹。该文件夹包含一些验证文件,certbot 将访问这些文件以验证您的域名是否已绑定到该服务器。在大多数情况下,此命令就足够了,

但是有时候我们的一些服务是没有根目录的,比如一些微服务。这时候使用--webroot 就不行了。certbot还有另一种模式--standalone,这种模式不需要指定网站的根目录,它会自动启用服务器的443端口来验证域名的归属。我们有其他服务(比如nginx)占用了443端口,我们必须先停止这些服务ssl证书申请流程,等证书生成后再启用。

certbot certonly --standalone -d example.com -d www.example.com

证书生成后,我们可以在/etc/letsencrypt/live/目录下看到域名对应的文件夹,里面存放了证书的一些快捷方式。

这时候我们的第一次证书生成已经完成,接下来就是配置我们的web服务器,开启HTTPS。

Nginx 配置启用 HTTPS

博客系统使用Nginx服务器转发请求,这里是我的Nginx配置。

    server {
        server_name diamondfsd.com www.diamondfsd.com;
        listen 443;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/diamondfsd.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/diamondfsd.com/privkey.pem;
        location / {
           proxy_pass http://127.0.0.1:3999;
           proxy_http_version 1.1;
           proxy_set_header X_FORWARDED_PROTO https;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header Host $host;
        }
    }
    server {
        server_name api.diamondfsd.com;
        listen 443;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/api.diamondfsd.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/api.diamondfsd.com/privkey.pem;
        location / {
           proxy_pass http://127.0.0.1:4999;
           proxy_http_version 1.1;
           proxy_set_header X_FORWARDED_PROTO https;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header Host $host;
        }
    }

主要监听443端口,开启SSL,配置SSL证书路径(公钥、私钥路径)。

通过这些配置,我们就成功的完成了Https的启用。