WordPress 01 :: 使用Letsencrypt构建https网站

1. Https or Http?

1.1 什么是Https?

一下一段话摘自于百度百科:

HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。

1.2 为什么要用Https?

顾名思义,https比http更为安全,因为加入了ssl,所以保证了网页内容以http协议传输的过程中不会被第三方篡改。

有的客官就会问了,篡改了能怎么滴?

设想一下,假如你有一个电商网站,上面买的都是产品的价格都是你设置好的价格,但是可能有不法分子把你的价格都改成1分钱,那么你的损失就可大了。这只是一个简单的例子,可能还有很多更为恐怖的后果或者可能性。总之如果部署网站,一般都要部署为https。

1.3 如何将网站部署为Https?

要将已有的网站部署为https网站,一个先决条件就是,需要申请ssl证书。用户在浏览请上请求网站的时候,你的Web服务器,会使用ssl证书将内容加密,然后连同公钥发送给浏览器,浏览器会自动安装公钥,并解密网页内容,显示在浏览器上。

2. 怎么申请免费证书?

一般来说,有三个途径获取ssl证书:

  • 有些云厂商会提供免费的证书,比如阿里云,如果在阿里云上申请ECS,阿里云会提供20个一年内的免费证书
  • 可以向CA购买付费的SSL,这样的SSL证书有效期长,而且可以支持多级域名
  • 向LetsEncrypt或ZeroSSL这种CA申请免费的SSL,这样的免费SSL一般来说有效期为3个月,到期后需要renew证书

3. LetsEncrypt与ZeroSSL

CA 90天证书 1年证书
Zero SSL 每个用户终身3个免费证书,renew也要小号一个免费名额。
从第四个开始收费。
收费
LetsEncrypt 无限 收费

4. 如何在ubuntu上申请ssl证书

可以参考这篇文档来申请

certbot.eff.org/lets-encryp…

  • 安装openssl
sudo apt install openssl -y
复制代码
  • 安装snapd
sudo apt install snapd -y
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
复制代码
  • 安装Nginx

参考这篇文章安装nginx

www.digitalocean.com/community/t…

  • 申请证书
certbot certonly --nginx
复制代码

image.png

这个过程中,你需要输入你的email和域名(如果没有域名,可以使用ip),但是你需要确保你的输入的域名或者ip可用。

  • /etc/letsencrypt/archive中查看生成的证书

image.png

你需要使用的是fullchain1.pemprivkey1.pem

5. 如何使用nginx来部署https网站?

  • 把生成的证书放到/etc/ssl文件夹
# /etc/letsencrypt/archive/<yourdomain>
cp fullchain1.pem /etc/ssl/fullchain.pem -f
cp privkey1.pem /etc/ssl/private.pem -f
复制代码
  • 更新nginx.conf文件
  server {
      listen 80;
      return 301 https://$host$request_uri;
  }

  server {
      listen 443 ssl;
      # ...

      ssl_certificate           /etc/ssl/fullchain.pem;
      ssl_certificate_key       /etc/ssl/private.pem;

      ssl on;
      ssl_session_cache  builtin:1000  shared:SSL:10m;
      ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
      ssl_prefer_server_ciphers on;
      # ...
  }

复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享