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'
##
|& 表示把管道前面标准输出(正确)和标准错误输出 都传递给后面的命令.
如果不加,默认传递标准输出(正确)
###### 脚本如下 ######
[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