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证书
可以参考这篇文档来申请
- 安装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
- 申请证书
certbot certonly --nginx
复制代码
这个过程中,你需要输入你的email和域名(如果没有域名,可以使用ip),但是你需要确保你的输入的域名或者ip可用。
- 在
/etc/letsencrypt/archive
中查看生成的证书
你需要使用的是
fullchain1.pem
和privkey1.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