

让网站永久拥有HTTPS - 申请免费SSL证书并自动续期
source link: https://blog.lucien.ink/archives/81/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

为什么要用HTTPS
网站没有使用HTTPS的时候,浏览器一般会报不安全,而且在别人访问这个网站的时候,很有可能会被运营商劫持,然后在网站里显示一些莫名其妙的广告。
有HTTPS的时候,通俗地讲所有的数据传输都会被加密,你和网站之间的数据交流也就更加安全。
Let's Encrypt
如果要启用HTTPS,我们就需要从证书授权机构处获取一个证书,Let's Encrypt 就是一个证书授权机构。我们可以从 Let's Encrypt 获得网站域名的免费的证书。
Certbot
Certbot是Let's Encrypt推出的获取证书的客户端,可以让我们免费快速地获取Let's Encrypt证书。
便宜SSL
便宜SSL是一家国内的SSL证书提供商,同样也拥有免费证书。而且提供丰富的工具: https://www.pianyissl.com/tools。
获取HTTPS证书
获取SSL证书的过程大体上都一样。既可以图形化,也可以命令行,最后实现的效果都完全一样,大家各取所需。
安装Certbot
进入Certbot的官网,选择你所使用的软件和系统环境,然后就会跳转到对应版本的安装方法,以Ubuntu + Nginx为例。
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot
安装完成后执行:
certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com
这条命令的意思是为以/var/www/example
为根目录的两个域名example.com
和www.example.com
申请证书。
如果你的网站没有根目录或者是你不知道你的网站根目录在哪里,可以通过下面的语句来实现:
certbot certonly --standalone -d example.com -d www.example.com
使用这个语句时Certbot会自动启用网站的443
端口来进行验证,如果你有某些服务占用了443
端口,就必须先停止这些服务,然后再用这种方式申请证书。
证书申请完之后,Certbot会告诉你证书所在的目录,一般来说会在/etc/letsencrypt/live/
这个目录下。
进入便宜SSL的官网https://www.pianyissl.com,注册了账号之后,选择那个体验版的免费测试
,然后点确认购买。
输入域名并点击生成CSR并提交申请
按钮。
点击确定
按钮。
接下来会选择验证方式。
这里我选择邮箱验证方式,其它另外两种依照你的个人情况而定,反正就是为了验证域名是不是你的而已。
大约过几分钟,邮箱会收到一封验证邮件,如下图,复制②指向的一串验证码,点击①处的Here链接。
输入验证码,点击Next>
按钮。
提示已经输入正确的验证码,点击Close Window
。
大约等到10分钟左右,再次登陆https://www.pianyissl.com,进入个人中心,可以看到已经成功申请SSL证书,点击查看详情。
此时你可以点击箭头所指的证书打包下载,然后免费的SSL证书就可以下载到本地了,下载后可以看到SSL压缩包内的文件。
部署HTTPS证书
找到网站的Nginx配置文件,找到listen 80;
,修改为listen 443;
在这一行的下面添加以下内容:
ssl on;
ssl_certificate XXX/fullchain.pem; 修改为fullchain.pem所在的路径
ssl_certificate_key XXX/privkey.pem; 修改为privkey.pem所在的路径
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
保存退出后,通过nginx -t
来检查配置文件是否正确,有错误的话改之即可。配置文件检测正确之后,通过nginx -s reload
来重载配置文件。
然后通过访问https://example.com
来查看是否配置成功。
如果发现无法访问或者是加载不出来的话检查一下443
端口有没有开启!
设置HTTP强制跳转HTTPS
上一步成功之后大家可能会发现通过原来的http://example.com
无法访问网页了,因为HTTP默认走的是80
端口,我们刚才将其修改为443
端口了。在这里我们可以在配置文件的最后一行加入以下代码:
server {
listen 80;
server_name example.com; 这里修改为网站域名
rewrite ^(.*)$ https://$host$1 permanent;
}
意思是每一个通过80
端口访问的请求都会强制跳转到443
端口,这样一来访问http://example.com
的时候就会自动跳转到https://example.com
了。
命令行下设置证书自动续期
有心的小伙伴可能会留意到我们刚才申请的整数的有效期只有90天,不是很长,可是我们可以通过Linux
自带的cron
来实现自动续期,这样就相当于永久了。
随便找一个目录,新建一个文件,名字随便起,在这里以example
为例,在里面写入0 */12 * * * certbot renew --quiet --renew-hook "/etc/init.d/nginx reload"
,保存。
然后在控制台里执行crontab example
一切都OK了。原理是example
里存入了一个每天检查更新两次的命令,这个命令会自动续期服务器里存在的来自Certbot的SSL证书。然后把example
里存在的命令导入进Certbot的定时程序里。
其它环境下的证书部署
https://www.pianyissl.com/support/
Nginx相关命令
nginx -t 验证配置是否正确
nginx -v 查看Nginx的版本号
service nginx start 启动Nginx
nginx -s stop 快速停止或关闭Nginx
nginx -s quit 正常停止或关闭Nginx
nginx -s reload 重新载入配置文件
crontab相关命令
cat /var/log/cron 查看crontab日志
crontab -l 查看crontab列表
crontab -e 编辑crontab列表
systemctl status crond.service 查看crontab服务状态
systemctl restart crond.service 重启crontab
https://www.cnblogs.com/zoro-zero/p/6590503.html
http://blog.csdn.net/gsls200808/article/details/53486078
https://certbot.eff.org/#ubuntuxenial-other
http://nginx.org/en/docs/http/configuring_https_servers.html
最后修改:2018 年 09 月 03 日 11 : 21 PM
Recommend
-
28
前言 在前后端分离的开发模式下,前端用户登录成功后后端服务会给用户颁发一个jwt token。前端(如vue)...
-
9
阿里云申请免费SSL证书 2017-09-12 00:54:08 +08 字数:1306 标签: Aliyun HTTPS...
-
30
README.md Freenom:freenom域名自动续期 Documentati...
-
7
当前位置: 陈沩亮博客 » CWP控制面板 » Let’s Encrypt不自动续期?更新通配符证书续期脚本Let’s...
-
4
给IP地址申请免费SSL证书?由 TaterLi2021年10月28日2021年10月28日 答案是不能的,但是可以另辟蹊径,让每一个IP都拥有证书,在这里特别...
-
1
在进行网站建设的时候, SSL 证书是一个可以有效的提升网络数据传输过程安全性的手段。而一般来说,大家可以选择直接购买 SSL 证书或使用 Let’s Encrypt 提供的免费证书。但 Let’s Encrypt 的证书问题在于往往是短期证书...
-
9
使用certbot自动给通配符证书续期 今晚发现 hellodk.com 的几个网站的证书过期(比如 https://router.hellodk.com )无法访问,然后续期证书遇到问题,本文记...
-
6
如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!amh.sh免费泛域名https证书 自动续期自己的网站一直使用的https,用ssl证书就是在腾讯云免费申请的...
-
5
用lego来代替acme申请免费ssl证书 2024-01-24 1 分钟阅读 amce申请证书实在是太烦了,对于一台只有1cpu 512m的vps来说,装这个东西简直就是费时费劲。 好在有人干脆开发了一个go语言的工具lego,这东西完全能够替代掉ACME...
-
5
如何申请免费的SSL证书和通配符证书 一,目前免费证书普遍存在的痛点 证书有效期普遍只有3个月...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK