为何要使用https?nginx
为何要使用Let's Encrypt
?算法
Let's Encrypt
免费开源无疑是一个不错的选择。本文将记录蓝眼博客 (https://blog.eyeblue.cn) 搭建https的整个过程。网上有不少使用let's encrypt
代码生成证书,或者使用Certbot来生成证书,可是笔者以为都没有直接借助 https://freessl.org/ 来生成证书方便快捷。浏览器
打开网站 https://freessl.org/ 填写本身的域名,你将看到下图。这里咱们填入 blog.eyeblue.cn
,同时在下方勾选 Let's Encrypt
,而后点击**“建立免费的SSL证书”**按钮便可安全
填写本身的邮箱bash
证书品牌只能选择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 地址来验证您是否有改域名的全部权。所以,您须要下载给顶的验证文件,并上传到您的服务器。阿里云
浏览器生成
。通常的浏览器都支持Web Cryptography
,直接使用默认的浏览器生成
最方便。下图即是个人填写,填好以后点击**“点击生成”**按钮。 spa
3.1 在第2步中点击按钮后,会弹出下图内容:
在点击第3步的按钮后,会弹出证书文件下载的按钮,此时点击**“下载证书”**便可得到证书文件full_chain.pem
和私钥文件private.key
。
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/
能够帮咱们管理证书,注册登陆以后即可以看到咱们的证书管理界面以下:
原文发表于蓝眼博客:https://blog.eyeblue.cn/home/article/9f580b3f-5679-4a9d-be6f-4d9f0dd417af