HTTPS


HTTPS介绍

https -- http over tls
基于http协议,传输的时候进行加密.
如果不使用https,数据传输都是明文的.
应用场景:
	目前大部分的业务都是使用https加密.
	企业想使用http 2.0 基于https.
部署https加密的流程
	1-域名 *.jd.com www.jd.com
	2-根据域名申请https证书(私钥与公钥(ca证书)),自己创建. ᲼
	3-进行配置web/lb.	

HTTPS警告

申请的https证书的域名与网站域名一致,才能正常使用. 否则用户访问会有警告与提示.
-- 1证书过期
-- 2非权威机构颁发      # 提示危险

-- 3网站域名于证书域名不匹配 # 提示连接不是专用连接

配置http 跳转https

server {
 	listen 80;
    server_name ssl.oldboylinux.cn; 
 	return 301   https:Վˌssl.oldboylinux.cn$request_uri;
      #rewrite ^(.*)$ https://ssl.oldboylinux.cn$1  permanent
}


#### 解析
$request_uri 
这个变量包含了请求的完整路径和查询参数,但不包括协议(如 http 或 https)和主机名(即域名或IP地址)
指的是头后面的连接
## 区别
URL:URL的格式一般由三部分组成:第一部分是协议(或称为服务方式),如http://、ftp://等;第二部分是存有该资源的主机IP地址(有时也包括端口号);第三部分是主机资源的具体地址,即资源的路径和文件名。
URI:URI的格式也包含几个部分,但具体组成部分可能因URI的类型而异。一般来说,URI由访问资源的命名机制、存放资源的主机名和资源自身的名称(由路径表示)组成。URI的格式更为灵活,可以包含更多的信息来标识资源。
## 关系
URL是URI的一个子集,即所有的URL都是URI,但并不是所有的URI都是URL。URI的概念更为广泛,它可以包括URL以及URN(Uniform Resource Name,统一资源名称)等其他类型的标识符。
URL主要关注资源的定位和访问方式,而URI则更侧重于资源的唯一标识和交互操作。
综上所述,URL和UR

命令创建HTTPS证书

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

openssl req -days 36500 -x509 > -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt

HTTPS的配置文件及其优化

### 默认配置
server {
 	listen 443 ssl; 
     #ssl on ; 1.15.0 以后被废弃了. 
 	server_name ssl.oldboylinux.cn; 
 	root /app/code/ssl; 
  	#ssl key 
 	ssl_certificate     /etc/nginx/ssl_keys/ssl.oldboylinux.cn.pem;
	 ssl_certificate_key /etc/nginx/ssl_keys/ssl.oldboylinux.cn.key;
 	location / {
   		index index.html;
 	}
}

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

监控HTTPS什么时候过期

过期时间.
流程:
	通过命令获取证书的过期日期
	与当前日期对比(30天之前)
	获得剩余的时间
 curl -vL   https:www.baidu.com | grep 'expire date'
#有一些命令的输出,并非标准输出,而是作为标准错误输出.

 curl -vL   https:Վˌwww.baidu.com |& grep 'expire date'
##
|& 表示把管道前面标准输出(正确)和标准错误输出 都传递给后面的命令.
如果不加,默认传递标准输出(正确)

image-20240710162935785

image-20240710163138617

###### 脚本如下 ######
[root@web01 ~]# sh 1.sh 
原始格式的过期时间 Dec 09 01:34:41 2024
处理后的过期时间   2024-12-09

[root@web01 ~]# cat 1.sh
#!/bin/bash
# 把网页赋值给url变量
url=https://www.jd.com
# 将截取出的时间赋值给expire_date_ori
expire_date_ori=`curl -vL $url |& grep 'expire date' |awk -F 'date:|GMT' '{print $2}'`
# 使用 date -d 命令进行时间转换 +%F
expire_date_opt=`date -d "$expire_date_ori" +%F`

# 打印时间
echo 原始格式的过期时间 $expire_date_ori
echo 处理后的过期时间   $expire_date_opt