两种方式免费部署HTTPS

栏目: 编程工具 · 发布时间: 6年前

内容简介:HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但H

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

两种方式免费部署HTTPS

一、为什么使用HTTPS

HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTPS协议可以防止网络数据在传输过程中被抓取、篡改,可以用来应对运营商劫持、广告植入。此外,访问支持HTTPS协议的网站时,谷歌等浏览器会在地址栏处显示一个安全标识,这样在用户看来会显得网站比较安全,提升客户信任度。

部署HTTPS需要先购买SSL证书,证书的价格为每年几千到几万元不等。也有一些服务商会提供免费的SSL证书,下面介绍两种申请免费SSL证书并部署HTTPS的方式。

二、Let's encrypt免费证书

Let's Encrypts是一个公共的免费SSL的项目,逐渐被广大用户传播和使用,由Mozilla、Cisco、Akamai、IdenTrust、EFF等组织人员发起,主要的目的为推进网站从HTTP向HTTPS过度的进程,目前已经有越来越多的用户加入和赞助支持。

下面介绍下ubuntu下安装Let's encrypt证书的过程。

1.安装certbot(用于自动续约证书)

# 添加安装源
sudo add-apt-repository ppa:certbot/certbot
# 更新apt安装源
sudo apt-get update
# 安装
sudo apt-get install python-certbot-apache
复制代码

2.安装Lets encrypt

# 安装 letsencrypt
sudo apt-get install letsencrypt
# 生成证书
letsencrypt certonly --agree-tos --email youname@163.com -d www.domain.com
复制代码

运行上诉命令后会在/etc/letsencrypt文件夹下生成证书相关文件

3.配置nginx

在/etc/nginx/conf.d/文件夹下面增加一个站点配置文件website.conf,内容如下(将www.domain.com替换成你的实际域名):

server {
    listen 80;
    # listen [::]:80;
    server_name www.domain.com; 
  # Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response. 
  return 301 https://$host$request_uri; 
}
server {
    listen 443 ssl http2;
    # listen [::]:443 ssl http2;
    server_name www.domain.com;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
    ssl_certificate /etc/letsencrypt/live/www.domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.domain.com/privkey.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;

    # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
    # ssl_dhparam /etc/ssl/certs/dhparam.pem;

    # intermediate configuration. tweak to your needs.
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
    ssl_prefer_server_ciphers on;

    # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
    add_header Strict-Transport-Security max-age=15768000;

    # OCSP Stapling ---
    # fetch OCSP records from URL in ssl_certificate and cache them
    ssl_stapling on;
    ssl_stapling_verify on;

    ## verify chain of trust of OCSP response using Root CA and Intermediate certs
    # ssl_trusted_certificate /etc/letsencrypt/live/www.gabin.top/root_ca_cert_plus_intermediates;

    # resolver 8.8.8.8 8.8.4.4 valid=300s;
    # resolver_timeout 5s;
}
复制代码

4.重载nginx配置

运行如下命令:

nginx -s reload
复制代码

5.添加定时续签任务

Lets encrypt证书默认有效期为三个月,需要定时续签。 编辑定时任务:

crontab -e
复制代码

增加定时任务:

# 每天夜里凌晨 2 点续签:
* 2 * * * service nginx stop & letsencrypt renew & service nginx start
复制代码

三、七牛云免费证书

许多云服务商如阿里云、腾讯云、七牛云会提供免费的SSL证书,此类证书的有效期大多为一年,到期需要手动续签。这里通过七牛云举例说明。

1.申请证书

访问https://portal.qiniu.com/certificate/apply,选择购买免费证书:

两种方式免费部署HTTPS

填写信息并申请成功后,可以在证书列表查看相关证书:

两种方式免费部署HTTPS

2.下载证书

依次点击【详情】-【查看证书】-【下载证书】下载证书文件:

两种方式免费部署HTTPS

下载完成后将证书上传到服务器。

3.修改nginx配置

此证书设置的方法与Lets encrypt类似,只需将上传后证书文件所在路径替换一下即可,这里就不在赘述了。

两种方式免费部署HTTPS
  • 有任何疑问可以关注微信公众号“全栈社区”进行提问,还可获取更多站长、开发者必备的前端、后端、运维技术干货。

  • 19元美国VPS、网站空间、建站源码:www.xumaoyun.com


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Tagging

Tagging

Gene Smith / New Riders / 2007-12-27 / GBP 28.99

Tagging is fast becoming one of the primary ways people organize and manage digital information. Tagging complements traditional organizational tools like folders and search on users desktops as well ......一起来看看 《Tagging》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具