让网站永久拥有HTTPS-申请免费SSL证书并自动续期

为什么要用HTTPS

网站没有使用HTTPS的时候,浏览器一般会报不安全,而且在别人访问这个网站的时候,很有可能会被运营商劫持,然后在网站里显示一些莫名其妙的广告。 

有HTTPS的时候,通俗地讲所有的数据传输都会被加密,你和网站之间的数据交流也就更加安全。

相关简介

我们加密吧

  如果要启用HTTPS,我们就需要从证书授权机构处获取一个证书,让我们加密就是一个证书授权机构。我们可以从让加密获得网站域名的免费的证书。

Certbot

Certbot是Let's Encrypt推出的获取证书的客户端,可以让我们免费快速地获取Let's Encrypt证书。

SSL超市

SSL超市一家国内的SSL证书提供商,同样也拥有免费证书。提供而且丰富的工具https://www.sslchaoshi.com

获取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

这条命令的意思是为以/无功/网络/例子为根目录的两个域名example.com和www.example.com申请证书。

  如果你的网站没有根目录或者是你不知道你的网站根目录在哪里,可以通过下面的语句来实现:

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

图形化

进入SSL的超市官网https://www.sslchaoshi.com注册了账号之后,选择那个COMOD单域名证书,然后点确认购买,或者选择一款测试版的证书进行购买钱测试使用

登陆该网址后,点击注册,然后找到这款证书,(我看了是行业中最便宜的一款了)

点击“确认购买”

完成支付后点击证书详情(如果你要开发票的话就点击开发票就可以了)

输入域名,并点击“生成CSR并提交申请”按钮

这里我选择邮箱验证方式,其它另外三种依照你的个人情况而定,反正就是为了验证域名是不是你的而已。点击“确定”按钮

这里有个注意事项,邮箱采用验证一定要是该域名的    所有者联系邮箱     大家可以到站长工具域名注册查询,查到的信息如下

大约过几分钟,邮箱会收到一封验证邮件,如下图,复制②指向的一串验证码,点击①处的这里链接

输入验证码,点击“下一步>”按钮

提示已经输入正确的验证码,点击“关闭窗口”

大约等到10分钟左右,再次登陆https://www.sslchaoshi.com,进入个人中心,可以看到已经成功申请SSL证书,点击查看详情

此时你可以点击证书打包下载,然后免费的SSL证书就可以下载到本地了,下载后可以看到SSL压缩包内的文件,

有各个WEB服务器的证书,你可以根据你的WEB服务器的版本选择。

注意:如果提交CSR的时候选择的是自己生成的CSR,打包下载的证书压缩包里没有IIS目录,需要用户用CSR对应的私钥和证书去生成IIS需要的PFX后缀证书

部署HTTPS证书

找到网站的Nginx配置文件,找到听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端口了。在这里我们可以在配置文件的最后一行加入以下代码:

服务器{

           听80;

           server_name example.com; 这里修改为网站域名

           重写^(。*)$ https:// $ host $ 1 permanent;

}

意思是每一个通过80端口访问的请求都会强制跳转到443端口,这样一来访问http://example.com的时候就会自动跳转到https://example.com了。

命令行下设置证书自动续期

有心的小伙伴可能会留意到我们刚才申请的整数的有效期只有90天,不是很长,可是我们可以通过Linux的自带的cron的来实现自动续期,这样就相当于永久了。

随便找一个目录,新建一个文件,名字随便起,在这里以示例为例,在里面写入0 * / 12 * * * certbot renew --quiet --renew-hook“/etc/init.d/nginx重装“,保存。

然后在控制台里执行crontab例子一切都OK了。原理是示例里存入了一个每天检查更新两次的命令,这个命令会自动续期服务器里存在的来自Certbot的SSL证书。然后把示例里存在的命令导入进Certbot的定时程序里。

附:

其它环境下的证书部署

https://www.sslchaoshi.com/help/docs

Nginx的相关命令

nginx -t验证配置是否正确

nginx -v查看Nginx的版本号

服务nginx启动启动Nginx

nginx -s停止快速停止或关闭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

猜你喜欢

转载自blog.csdn.net/DQSEwxl/article/details/83183614