Web服务器协议之Https简介

举报
tea_year 发表于 2025/01/17 16:27:59 2025/01/17
【摘要】 https协议时由SSL+HTTP协议构建的可进行加密传输、身份验证的网络协议,比HTTP协议安全,可防止数据在传输过程中被窃取、修改,确保数据的完整性。端口时443。需要用到CA申请证书且需要一定费用。 (无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

HTTPS概述

基于http协议,传输的时候进行加密

如果不使用https,数据传输都是明文的

1.应用场景:

目前大部分都是使用https加密

企业想使用http 2.0 基于https

2.部署https加密的流程

  1. 申请域名

    image-20240819001142723.png

    image-20240819001122975.png

    image-20240819010743284.png

  2. 根据域名申请https证书(私钥与公钥(ca证书)
  3. 数字证书管理服务(原SSL证书)SSL数字证书HTTPS加密服务器证书CA认证

    1238843-20230222211821292-56367368.png

    image-20240818224645283.png

    image-20240819001604379.png

  4. Https加密流程与http跳转https


温馨提示

申请的https证书与网站域名一致,才能正常使用,否则用户访问会有警告与提示

[root@web01 ~]# mkdir -p /etc/nginx/ssl/[root@web01 ~]# unzip 8458094_ssl.yuanliunx.cn_nginx.zip -d /etc/nginx/ssl
Archive:  8458094_ssl.yuanliunx.cn_nginx.zip
Aliyun Certificate Download
  inflating: /etc/nginx/ssl/8458094_ssl.yuanliunx.cn.pem  
  inflating: /etc/nginx/ssl/8458094_ssl.yuanliunx.cn.key 
  
[root@web01 ~]# cd /etc/nginx/ssl/
[root@web01 /etc/nginx/ssl]# ll,下面是你解压的两个密钥文件
​
​
 #代码从下面开始-------------------------------------------
[root@web01 /etc/nginx/conf.d]# cat ssl.yuanliunx.cn.conf 
server{
    listen 80;
    server_name ssl.yuanliunx.cn;               #域名是自己的域名
    return 302 https://ssl.yuanliunx.cn$request_uri;            #设置跳转
    #rewrite ^(.*)$ https://ssl.yuanliunx.cn$1 permanent;
} 
server {
  listen 443 ssl;           #修改这一行,记得加ssl
  server_name  ssl.yuanliunx.cn ; 
  root /app/code/ssl;
  error_log   /var/log/nginx/ssl-error.log notice; 
  access_log  /var/log/nginx/ssl-access.log main;
 
  #ssl key  增加证书
  ssl_certificate     /etc/nginx/ssl/ssl.yuanliunx.cn.pem;
  ssl_certificate_key /etc/nginx/ssl/ssl.yuanliunx.cn.key;
 
  location / {
    index index.html;
  } 
} 

1724051860388.png

1724051846095.png

1724053196170.png

命令行创建https证书

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
​
----------------------
#创建私钥
openssl genrsa -idea -out server.key 2048 
#根据私钥创建 证书
openssl req -days 36500 -x509 -sha256 -nodes -newkeyrsa:2048 -keyout server.key -out server.crt


4、网站集群https配置

4.1 https+https

upstream:负载均衡服务器,lb01, https

https: web01

[root@lb01 ~]# cat /etc/nginx/conf.d/ssl.yuanliunx.cn.conf 
upstream ssl_pools{
    server 10.0.0.7:443;    #修改为443 
}
server {
    listen 80;
    server_name ssl.yuanliunx.cn;
    return 302 https://ssl.yuanliunx.cn$request_uri;            #跳转修改为https
}
server { 
    listen 443 ssl;             #修改为443
    server_name ssl.yuanliunx.cn;
    ssl_certificate     /etc/nginx/ssl/ssl.yuanliunx.cn.pem;    #添加证书
    ssl_certificate_key /etc/nginx/ssl/ssl.yuanliunx.cn.key;       #添加证书
    
    error_log  /var/log/nginx/ssl.cn-error.log notice;              
    access_log  /var/log/nginx/ssl.cn-access.log  main;
    
    location / {
        proxy_pass https://ssl_pools;     #注意这里是https
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
    }
} 
​
​
​
 #---------------------------------------------------------------
[root@web01 ~]# cat /etc/nginx/conf.d/ssl.yuanliunx.cn.conf 
server{
    listen 80;
    server_name ssl.yuanliunx.cn;
    return 302 https://ssl.yuanliunx.cn$request_uri;
        #rewrite ^(.*)$ https://ssl.yuanliunx.cn$1 permanent;
}
server {
  listen 443 ssl;
  server_name  ssl.yuanliunx.cn ; 
  root /app/code/ssl;
  error_log   /var/log/nginx/ssl-error.log notice; 
  access_log  /var/log/nginx/ssl-access.log main;
 
  #ssl key 
  ssl_certificate     /etc/nginx/ssl/ssl.yuanliunx.cn.pem;
  ssl_certificate_key /etc/nginx/ssl/ssl.yuanliunx.cn.key;
 
  location / {
    index index.html;
  } 
}
 

php配置https要加上

fastcgi_param HTTPS on; #前面部分的请求是https

4.2 https+http

#修改负载均衡器:
https
#1.池子
upstream ssl_pools{
    #server 192.168.174.7:443;
    server 192.168.174.8:80;        #web02
}
#其他不用动..
    location / {
        #proxy_pass         https://ssl_pools;      #
        proxy_pass http://ssl_pools;
        proxy_set_header  Host $http_host;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }
​
​
​
​
web02:内网:
http
代码:
/etc/nginx/ssl,需要有对应的文件
scp ./nginx*  root@web02:`pwd`
​
创建一个目录
/app/code/mylinux
在里面创建一个index.html
echo 'web02 mylinux' >/app/code/mylinux/index.html
​
/子排位置文件;
/etc/nginx/conf.d/mylinux.cn.conf
server{
        listen 80;
        server_name mylinux.cn;
        root /app/code/mylinux;
​
        location / {
                index index.html;
        }
}//配置/etc/hosts
ip mylinux.cn
​
​


出来mylinux02标识成功了!!!!

https+https:适用于对安全性比较高的网站;!金融 保险 支付等等;

https+http : 新闻类的、博客、文章,一般性的网站即可!!!

5.https优化与监控

5.1.优化

https === http over tls

server {
       listen              443 ssl;
       keepalive_timeout   70;
       #抓包测试指定ssl加密协议的版本
       ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;          
      #加密算法.需要排除算法 排除null空算法, md5算法
       ssl_ciphers   AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-            MD5:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5;
       ssl_certificate    /usr/local/nginx/conf/cert.pem;
       ssl_certificate_key  /usr/local/nginx/conf/cert.key;
       
        #设置https 会话缓存
       ssl_session_cache   shared:SSL:10m;
       
        #超时时间 10分钟
       ssl_session_timeout 10m;
      
   }
 
 #https://md5.cc/  解密网站;

5.2.监控

过期时间

流程:

通过命令获取证书的过期日期

与当前日期对比(30天之前)

获得剩余的时间

1724116846082.png


[root@web03 ~]# curl -vL   https://www.baidu.com |& grep 'expire date'
*   expire date: Aug 06 05:16:01 2023 GMT
[root@web03 ~]# curl -vL   https://www.baidu.com |& grep 'expire date'|awk -F ': ' '{print $2}'

温馨提示:

| 只传输正确输出

|& 表示把管道前面标准输出(正确)和标准错误输出 都传递给后面的命令.

[root@web03 ~]# vim /server/scripts/check_ssl.sh
#!/bin/bash
#author:wh
#desc:检查证书的到期时间
 
url=https://www.baidu.com
#获取过期时间
expire_date=`curl -vL ${url} |& grep 'expire date'|awk -F ': ' '{print $2}'`
#格式化过期时间
expire_date_day=`date -d "${expire_date}" +%F`
 
#过期时间装换为秒
expire_date_second=`date -d "${expire_date}" +%s`
#现在的时间装换为秒
date_now_second=`date +%s`
 
#过期的时间
expire_days=`echo "(${expire_date_second}-${date_now_second})/60/60/24" |bc`
 
echo "网站${url}过期时间是:${expire_date_day}"
echo "网站${url}证书过期倒计时:${expire_days}天"
 

总结

https协议时由SSL+HTTP协议构建的可进行加密传输、身份验证的网络协议,比HTTP协议安全,可防止数据在传输过程中被窃取、修改,确保数据的完整性。端口时443。需要用到CA申请证书且需要一定费用。

(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

https的缺点:

SSL证书是收费的,而且功能越强的证书越贵
SSL会延长页面的加载时间,协议握手阶段耗时,有统计延长大概50%
https在缓存方面不如http
https会占用更多服务器的连接资源
https在面对黑客攻击、Dos拒绝服务攻击等方面也没啥作用

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。