Let's Encrypt 使用教程,免费的SSL证书,让你的网站拥抱 HTTPS
2017-11-14 09:29
1081 查看
这篇文章主要讲的就是如何让自己的网站免费从HTTP升级为HTTPS,使用的是 Let's Encrypt的证书。实际上也就是一个Let's Encrypt 免费证书获取教程 。
为什么要上HTTPS,说一个小故事。从前有个网站,后来有个广告,没了作为一个博客,自然不想让在被别人浏览的时候,出现莫名的广告(运营商劫持)。这时候,HTTPS的价值就体现出来了。 HTTPS的好处还有很多,但单单这一条,就够我花心思去升级了。 (其实主要目的是提升网站Biger :)
通过这些配置 我们就已经成功的完成了 Https 的启用。
现在打开我的博客 https://diamondfsd.com 就可以看到标有
通过这个命令,他会自动检查系统内的证书,并且自动更新这些证书。
我们可以运行这个命令测试一下
这是因为我的api.diamondfsd.com生成证书的时候使用的是
我新建了一个文件
参考实战申请Let's Encrypt永久免费SSL证书过程教程及常见问题https://www.cnblogs.com/jtnote/p/7155687.html
为什么要上HTTPS,说一个小故事。从前有个网站,后来有个广告,没了作为一个博客,自然不想让在被别人浏览的时候,出现莫名的广告(运营商劫持)。这时候,HTTPS的价值就体现出来了。 HTTPS的好处还有很多,但单单这一条,就够我花心思去升级了。 (其实主要目的是提升网站Biger :)
Let's Encrypt 简介
如果要启用HTTPS,我们就需要从证书授权机构(以下简称CA) 处获取一个证书,Let's Encrypt 就是一个 CA。我们可以从 Let's Encrypt 获得网站域名的免费的证书。这篇文章也主要讲的是通过 Let's Encrypt + Nginx 来让网站升级到HTTPS。Certbot 简介
Certbot 是Let's Encrypt官方推荐的获取证书的客户端,可以帮我们获取免费的Let's Encrypt 证书。Certbot 是支持所有 Unix 内核的操作系统的,个人博客的服务器系统是CentOS 7,这篇教程也是通过在个人博客上启用HTTPS的基础上完成的。获取免费证书
安装Certbot客户端yum install certbot获取证书
certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com这个命令会为 example.com 和 www.example.com 这两个域名生成一个证书,使用
--webroot模式会在
/var/www/example中创建
.well-known文件夹,这个文件夹里面包含了一些验证文件,certbot 会通过访问 example.com/.well-known/acme-challenge 来验证你的域名是否绑定的这个服务器。这个命令在大多数情况下都可以满足需求,但是有些时候我们的一些服务并没有根目录,例如一些微服务,这时候使用
--webroot就走不通了。certbot 还有另外一种模式
--standalone, 这种模式不需要指定网站根目录,他会自动启用服务器的443端口,来验证域名的归属。我们有其他服务(例如nginx)占用了443端口,就必须先停止这些服务,在证书生成完毕后,再启用。
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 的启用。
现在打开我的博客 https://diamondfsd.com 就可以看到标有
安全的字样。
自动更新 SSL 证书
配置完这些过后,我们的工作还没有完成。 Let's Encrypt 提供的证书只有90天的有效期,我们必须在证书到期之前,重新获取这些证书,certbot 给我们提供了一个很方便的命令,那就是certbot renew。
通过这个命令,他会自动检查系统内的证书,并且自动更新这些证书。
我们可以运行这个命令测试一下
certbot renew --dry-run我在运行的时候出现了这个错误Attempting to renew cert from /etc/letsencrypt/renewal/api.diamondfsd.com.conf produced an unexpected error: At least one of the required ports is already taken.. Skipping.
这是因为我的api.diamondfsd.com生成证书的时候使用的是
--standalone模式,验证域名的时候,需要启用443端口,这个错误的意思就是要启用的端口已经被占用了。 这时候我必须把
nginx先关掉,才可以成功。果然,我先运行
service nginx stop运行这个命令,就没有报错了,所有的证书都刷新成功。证书是90天才过期,我们只需要在过期之前执行更新操作就可以了。 这件事情就可以直接交给定时任务来完成。linux 系统上有
cron可以来搞定这件事情。
我新建了一个文件
certbot-auto-renew-cron, 这个是一个
cron计划,这段内容的意思就是 每隔 两个月的 凌晨 2:15 执行 更新操作。
15 2 * */2 * certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"
--pre-hook这个参数表示执行更新操作之前要做的事情,因为我有
--standalone模式的证书,所以需要 停止
nginx服务,解除端口占用。
--post-hook这个参数表示执行更新操作完成后要做的事情,这里就恢复
nginx服务的启用最后我们用
crontab来启动这个定时任务
crontab certbot-auto-renew-cron至此,整个网站升级到HTTPS就完成了。 总结一下我们需要做什么本文出自https://diamondfsd.com/article/e221b455-b0e7-40b7-a6c7-9bb7e3e35657
参考实战申请Let's Encrypt永久免费SSL证书过程教程及常见问题https://www.cnblogs.com/jtnote/p/7155687.html
相关文章推荐
- 网站http改https Let’s Encrypt 安装 续期教程 免费ssl证书Let’s Encrypt使用教程Certbot
- 网站升级HTTPS,免费SSL证书Let’s Encrypt安装使用教程:Apache和Nginx配置方法
- Let's Encrypt 使用教程,免费的SSL证书,让你的网站拥抱 HTTPS
- 免费SSL证书Let's Encrypt(certbot)安装使用教程
- 免费SSL安全证书Let's Encrypt安装使用教程(附Nginx/Apache配置)
- 使用 Cerbot 部署 Let's Encrypt免费证书 简单 升级 http 到 https 申请单域名ssl证书
- 使用免费SSL证书让网站支持HTTPS访问
- [置顶] SSL安全证书Let's Encrypt安装使用教程(启用https)
- 使用 Let's Encrypt 生成免费SSL证书 Https
- 免费ssl证书申请和在IIS上启用https的使用教程
- 使用免费软件portecle从https网站上导出SSL证书与中级证书CA指南
- 全民https时代,Let's Encrypt免费SSL证书的申请及使用(Tomcat版)
- 【码云周刊第 7 期】首个完整版开源机器人项目;MySQL 开发和运维规范;小程序为何刚上线就遭冷落;Let's Encrypt 使用教程,拥抱HTTPS
- 使用免费软件portecle从https网站上导出SSL证书与中级证书CA指南
- CentOS+Apache使用免费SSL证书实现https网站
- centos搭建免费的ssl证书,大部分浏览器均支持!(let’s encrypt 的使用记录)
- 使用免费软件portecle从https网站上导出SSL证书与中级证书CA指南
- IIS - 自动申请、部署Let's Encrypt的免费SSL证书(让网站实现HTTPS协议)
- 【原创】免费申请SSL证书【用于HTTPS,即是把网站从HTTP改为HTTPS,加密传输数据,保护敏感数据】
- 使用Let`s encrypt 免费的https 证书