快速使用Let's Encrypt开启个人网站的https

背景

为什么要使用https?

  • https可以有效避免无良运营商的DNS劫持,可以显著提升网站逼格。
  • 使用https已经是大势所趋,人心所向,iOS甚至强制要求开发者使用https。

为什么要使用Let's Encrypt?

  • 对于个人开发者而言,https证书太贵,一般都好几千一年。
  • Let's Encrypt免费开源无疑是一个不错的选择。

本文将记录蓝眼博客 (https://blog.eyeblue.cn) 搭建https的整个过程。网上有很多使用let's encrypt代码生成证书,或者使用Certbot来生成证书,但是笔者觉得都没有直接借助 https://freessl.org/ 来生成证书方便快捷。

获取证书

1.填写域名

打开网站 https://freessl.org/ 填写自己的域名,你将看到下图。这里我们填入 blog.eyeblue.cn,同时在下方勾选 Let's Encrypt,然后点击“创建免费的SSL证书”按钮即可

2.填写邮箱,选择证书类型,验证类型和CSR生成方式
  • 填写自己的邮箱

  • 证书品牌只能选择Let's Encrypt

  • 证书类型选择ECC。这里主要是选择数字签名的算法,对于普通用户使用默认的ECC即可。如果需要根据自己的具体情境来选择,一般有以下选择依据:

    (1) RSA签名算法适合于:Verify操作频度高,而Sign操作频度低的应用场景。比如,分布式系统中基于capability的访问控制就是这样的一种场景。
    (2) ECDSA签名算法适合于:Sign和Verify操作频度相当的应用场景。比如,点对点的安全信道建立。

  • 验证类型使用DNS的方式。

    其实验证类型用来确定你是否是这个域名的所有者,确认的方式有两种:
    1.DNS。 CA(Certificate Authority 数字证书认证机构)将通过查询 DNS 的 TXT 记录来确定您对该域名的所有权,因此需要在域名管理平台将生成的 TXT 记录名与记录值添加到该域名下。
    2.文件。CA 将通过访问特定 URL 地址来验证您是否有改域名的所有权。因此,您需要下载给顶的验证文件,并上传到您的服务器。

  • CSR生成选择浏览器生成。一般的浏览器都支持Web Cryptography,直接使用默认的浏览器生成最方便。

下图便是我的填写,填好之后点击“点击生成”按钮。

3.进行DNS验证

3.1 在第2步中点击按钮后,会弹出下图内容:

3.2 这时只需要去域名解析控制台添加一条TXT的解析记录即可。我的域名在阿里云,因此解析详情如下图所示:

完成解析后,点击3.1中的“点击验证”按钮

4.下载证书

在点击第3步的按钮后,会弹出证书文件下载的按钮,此时点击“下载证书”即可获得证书文件full_chain.pem和私钥文件private.key

配置nginx

nginx的配置如下:

server{
        # 监听443端口
        listen 443 ssl;
        # 域名,如果有多个空格隔开
        server_name blog.eyeblue.cn;

        # 启用ssl
        ssl on;
        # 证书文件的放置路径。证书文件即通过上文《获取证书》的方式获得。
        ssl_certificate /data/security/letsencrypt/blogeyebluecn/full_chain.pem;
        # 私钥文件的放置路径。
        ssl_certificate_key /data/security/letsencrypt/blogeyebluecn/private.key;

        # 蓝眼博客的服务运行在端口6020
        location / {
                proxy_pass http://127.0.0.1:6020;
                proxy_set_header host $host;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_pass_request_headers      on;
                client_max_body_size  8m;
        }

}

#对于通过http来访问蓝眼博客的请求,我们默认让其跳转到https. 这样保持了http访问的兼容性。
server {
        listen      80;
        server_name    blog.eyeblue.cn;
        rewrite ^(.*)$ https://blog.eyeblue.cn$1 permanent;
}

修改了配置文件后记得

service nginx restart

验证

打开网页https://blog.eyeblue.cn,即可看到地址栏中绿色的小锁,证明https已经成功开启。即使你输入http://blog.eyeblue.cn也会自动转跳到https下的,如此便保证了兼容性。

维护

Let's Encrypt证书的有效期只有三个月,这就需要我们每隔一段时间就去更新一下证书,好在https://freessl.org/可以帮我们管理证书,注册登录之后便可以看到我们的证书管理界面如下:

参考文章

Nginx如何配置证书

RSA与ECC的选择

原文发表于蓝眼博客:https://blog.eyeblue.cn/home/article/9f580b3f-5679-4a9d-be6f-4d9f0dd417af

本文分类: 100 linux 100 网络安全
欢迎评论
共4条评论和回复
{{comment.createTime | simpleDateHourMinute}}
{{comment.content}}
{{subComment.name}} (作者) {{subComment.name}} {{subComment.content}}