让网站永久拥有免费HTTPS(SSL)

  • 为什么要用HTTPS
  • 相关简介
    • Let’s Encrypt
    • Certbot
    • 便宜SSL
  • 获取HTTPS证书
    • 命令行

      • 安装Certbot
      • 申请证书
    • 图形化
  • 部署HTTPS证书
  • 设置HTTP强制跳转HTTPS
  • 命令行下设置证书自动续期
  • 附:
    • 其它环境下的证书部署
    • Nginx相关命令
    • crontab相关命令
  • 参考文档

为什么要用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.comwww.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/server.crt;  修改为证书名称所在的路径
ssl_certificate_key XXX/server.key;  修改为证书秘钥所在的路径
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://lucien.ink/archives/81/
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

原文地址:https://www.cnblogs.com/51ma/p/11610872.html

时间: 2024-08-29 13:01:02

让网站永久拥有免费HTTPS(SSL)的相关文章

SSL For Free 申请免费https SSL 凭证

打开 SSL For Free网站(https://www.sslforfree.com) ,在输入框中填入你要申请 Let’s Encrypt 凭证的网域名称,可以用空白来分隔不同的网址,例如[subdomain.domain.com domain.com other.com](这个没试过),输入后点选右边的[Create Free SSL Certificate]继续. 二. 提供了三种验证网站的方式,此处选择使用手动的验证方式,即[Manually Verification]:点选下方的[

【原创】免费申请SSL证书【用于HTTPS,即是把网站从HTTP改为HTTPS,加密传输数据,保护敏感数据】

今天公司有个网站需要改用https访问,所以就用到SSL证书.由于沃通(以前我是在这里申请的)暂停了免费的SSL证书之后,其网站推荐了新的一个网站来申请证书,所以,今天因为刚好又要申请一个证书,所以,我就到这个网站申请了证书,趁着有一点点小空隙的时间,然后最近也没新写博文了,有些手痒痒.所以,就写了一下这个申请流程,流程就是如下: 1,打开进入网站:https://www.startssl.com/ 2,如果还没有账号的,那就先注册,方式如下: 然后他就会给你填写的有限发送验证码,这时候,进入你

@IM网站记录(一) =》免费https证书

@IM是为了方便印象搜索网盘 而开发的及时通讯系统.现在准备开辟一个专栏来写我在开发此网站遇到的点点滴滴.这是第一篇:免费https证书. 免费https证书网上一搜,基本上就定位Start SSL这个https证书服务提供商,主要根据下面这边博客来申请证书: http://www.freehao123.com/startssl-ssl/ 根据博客指引,申请下来证书,主要包括两个文件: im.impress-ssl.key im.impress-ssl.crt 申请下来的 im.impress-

【Other】申请免费的SSL证书及部署Https协议

序: 如今的开发中我们会注意到很多的网站都从http协议变成了https,不谈技术,但从外观就比较招我喜爱.故今天研究一下. 0x01:简谈http与https两者的区别. http:http为超文本传输协议,数据传输以明文的方式传输. https:https为http + ssl组成的加密传输的网络协议,与http相比较为安全.(盗一张图) 优缺点:优点 -> https在传输中对数据进行密文发送,大大降低了中间人拦截/篡改数据. 缺点 -> https并非绝对安全,由于数据进行了加密在性能

nginx安装Lets Encrypt SSL免费HTTPS加密证书

Linux Nginx网站:Certbot安装配置Lets Encrypt SSL免费HTTPS加密证书 原文地址:https://renwole.com/archives/157 实验环境:CentOS Linux release 7.2内核版本:Linux version 3.10.0-514.26.2.el7.x86_64Nginx版本: Nginx-1.13.0 Let's Encrypt是一个免费的.自动化.开放的证书颁发机构.由Mozilla.Cisco.Chrome.faceboo

哪些网站需要HTTPS(SSL证书)

很多站长似乎不了解https站点是怎么回事,这就要从传统站点说起:传统的站点的http超文本传输协议,采用明文传输模式,存在着大量的灰色中 间环节,明文信息在中间代理服务器.路由器.wifi热点.通信服务运营商等层层节点中转,每一层都有可能导致传输数据被窃取或被第三方篡改,此协议被认 为是非常不安全的传输协议.至此https加密协议应运而生,此协议在用户浏览器与服务器之间建立SSL加密通道,将数据加密后进行传输,大大降低了被第 三方窃取或篡改的风险. 在越来越重视网络私密性的今天,https协议

哪些网站需要HTTPS(SSL证书),至关重要吗?

很多站长似乎不了解https站点是怎么回事,这就要从传统站点说起:传统的站点的http超文本传输协议,采用明文传输模式,存在着大量的灰色中 间环节,明文信息在中间代理服务器.路由器.wifi热点.通信服务运营商等层层节点中转,每一层都有可能导致传输数据被窃取或被第三方篡改,此协议被认 为是非常不安全的传输协议.至此https加密协议应运而生,此协议在用户浏览器与服务器之间建立SSL加密通道,将数据加密后进行传输,大大降低了被第 三方窃取或篡改的风险. 在越来越重视网络私密性的今天,https协议

免费申请SSL证书 为您的网站加锁

5个多月前,整个互联网都被“Heartbleed”这个OpenSSL 软件的安全漏洞所震惊.事后,大家都在疑惑,本来采用SSL证书是为了数据传输的安全性,是为了更安全,可是结果呢? 不过,这个问题早已经被解决了,受影响的用户更新OpenSSL软件即可:请千万不要听信有些砖家的挖坑建议:不使用https,就没有问题了.如果不使用的话,那就不只是黑客能窃取数据,而是所有人都可以非常容易地窃取. SSL证书的作用 (1)网站身份实名认证.验证域名所有权和网站所有权,并对网站服务器真实身份进行国际验证,

https(ssl)免费证书申请及nginx配置https(ssl)

首先推荐免费证书的申请url:https://freessl.org/ 然后就是上面证书申请的流程,这里可以参考一篇阿里云里面的博文(我会补充一些细节): https://yq.aliyun.com/articles/225669?spm=5176.10695662.1996646101.searchclickresult.1da01cb9Hyk86J freessl免费证书申请补充: 一.补充一下配置DNS验证的流程,我这里用的是阿里云: 然后点击添加记录 确定 完成,全选,启用一下就可以了: