堡垒机和CA证书

1、堡垒机

1.1 堡垒机(跳板机 jump server)

堡垒机又称为跳板机,英文是Jump server

是一种特殊的计算机系统,它位于网络的边缘,通常用于控制和监控对关键系统的访问。堡垒机的主要作用是提供一个安全的访问点,以减少未经授权的访问和潜在的安全风险。它们通常用于访问服务器、数据库和其他关键的网络资源。

跳板机的关键特性包括:

  1. 访问控制:确保只有授权用户才能通过跳板机访问内部资源。
  2. 会话监控:记录所有会话活动,以便进行审计和监控。
  3. 身份验证和授权:通常需要用户进行身份验证,并根据用户权限限制访问。
  4. 隔离:跳板机可以隔离内部网络和外部访问者,减少直接暴露的风险。
  5. 安全协议:支持多种安全协议,如SSH、RDP等,以确保数据传输的安全。

跳板机在企业网络中扮演着重要的角色,特别是在需要远程访问内部资源的场景中。通过使用跳板机,企业可以更好地控制访问权限,提高网络的安全性。

VPN:virtual private network 虚拟私人网络

堡垒机的作用:可以提供验证、分配权限、安全设置

2、CA证书

CA证书,全称为证书颁发机构(Certificate Authority)证书,是一种由可信的第三方机构颁发的数字证书。CA证书的主要作用是验证网络通信双方的身份,确保数据传输的安全性和完整性。

2.1 获取证书的两种方法

  • 自签名证书:自己签发自己的公钥

  • 使用证书授权机构:

    • 生成证书请求(csr):自己申请(csr是申请证书的文件)
    • 将证书请求csr发送给CA:将申请包发给CA机构,申请表里有自己的相关基础信息
    • CA签名颁发证书:CA机构发证书给你

小拓展:https

HTTPS 协议:就是"HTTP 协议"和"SSL/TLS 协议"的组合。HTTP over SSL 或 HTTP over TLS ,对http协议的文本数据进行加密处理后,成为二进制形式传输

2.2 X.509证书协议

X.509:定义了证书的结构以及认证协议标准

  • 版本号
  • 序列号
  • 签名算法
  • 颁发者
  • 有效期限
  • 主体名称

3、openssl 命令

3.1 openssl 简介

  • 两种 运行模式

    • 交互模式
    • 批处理模式:命令+选项
  • 三种 子命令

    • 标准命令
    • 消息摘要命令
    • 加密命令:调用哪种算法加密

只有一个主程序:/usr/bin/openssl

3.1.1 使用openssl 实现对称加密

工具:openssl enc, gpg

算法:3des, aes, blowfish, twofish

enc命令:帮助:man enc

  • 加密:-e
js 复制代码
 [root@7-2 data]# vim a.txt
 hello
 [root@7-2 data]# cat a.txt
 hello
 [root@7-2 data]# openssl enc -e -des3 -a -salt -in a.txt  -out a.txt.enc
 enter des-ede3-cbc encryption password:123123
 Verifying - enter des-ede3-cbc encryption password:123123
 [root@7-2 data]# ls
 a.txt  a.txt.enc
 [root@7-2 data]# cat a.txt.enc   //后缀.enc是加密文件
 U2FsdGVkX1+kEGRIiig/qvumhLE2lL56
 ​
  • 解密:-d
js 复制代码
 [root@7-2 data]# openssl enc -d -des3 -a -salt -in a.txt.enc -out b.txt   //解密,将a.txt.enc文件,解密为b.txt文件
 enter des-ede3-cbc decryption password:123123
 [root@7-2 data]# ls
 a.txt  a.txt.enc  b.txt
 [root@7-2 data]# cat b.txt
 hello

3.1.2 使用 openssl 命令 生成加密密码

js 复制代码
 openssl passwd -6 123    //-6也是一种加密算法,centos7不支持,centos8和ubuntu支持。

示例:加密密码

  • Ubuntu上加密
js 复制代码
 [root@ubuntu2204 ~]#openssl passwd -6 123
 $6$l/5Abyy023t/abIm$yFoURoFsdYbXmYxRtqm0p4mgGlFiZSk7Z1tJQq3BMUnCoqWMDGa0FEKAICJMIM5LgQb.0ptEU1vxEcG8VwNQL.
 ​
  • 新建用户
js 复制代码
 [root@ubuntu2204 ~]#useradd  -p `openssl passwd -6 123`   cxk
  • 查看
js 复制代码
 [root@ubuntu2204 ~]#getent shadow cxk
 cxk:$6$u4qW23G1NSs9jLkU$LYtXj/3EGNQE64/5bd1TRq65r.ZPxs9410.E81FbgJbNNIhctVZQPdreuGyqhxspQbm9G4Dnhj/p8UyIcPQfV1:19943:0:99999:7:::

3.1.3 生成随机密码

js 复制代码
 openssl  rand -base64 9    //-base64是输出格式。-base64后面跟的是字节的长度,长度必须要是3的倍数,不然就会出现等号。 

小拓展:nginx中怎么升级openssl

3.2 建立私有CA 实现证书申请颁发

3.2.1 证书申请及签署步骤:

1、生成证书申请请求

2、RA核验

3、CA签署

4、获取证书

3.2.2 配置文件详解

openssl的配置文件:/etc/pki/tls/openssl.cnf

js 复制代码
 [root@7-2 CA]# pwd
 /etc/pki/CA          //存放CA机构证书
 [root@7-2 CA]# tree
 .
 ├── certs           //存放用户的证书
 ├── crl
 ├── newcerts        //存放用户的证书
 └── private        //存放用户私钥
 ​
 4 directories, 0 files
js 复制代码
 vim /etc/pki/tls/openssl.cnf
 36 [ ca ]
 37 default_ca      = CA_default     //默认ca
 38 
 42 dir             = /etc/pki/CA    //ca机构的总目录
 43 certs           = $dir/certs     //存放证书
 44 crl_dir         = $dir/crl       //证书吊销列表
 45 database        = $dir/index.txt   //所有用户的证书的数据库索引,存放用户证书的相关信息  默认文件不存在,需要手动新建,但是不需要手写。类似于证书的列表!!!
 48 new_certs_dir   = $dir/newcerts    //存放新证书的
 ​
 ​
 50 certificate     = $dir/cacert.pem   //The CA certificate   ca的自签名证书
 51 serial          = $dir/serial      //The current serial number  证书编号,编号必须是两位,比如1号就是01
 52 crlnumber       = $dir/crlnumber    //the current crl number  吊销证书的编号
 ​
 54 crl             = $dir/crl.pem      //The current CRL     吊销证书存放的目录
 55 private_key     = $dir/private/cakey.pem   //The private key   私钥位置
 ​
 ​
 73 default_days    = 365               //how long to certify for  默认证书的有效期
 74 default_crl_days= 30                //how long before next CRL
 75 default_md      = sha256            //use SHA-256 by default
 76 preserve        = no               //keep passed DN ordering

3.2.3 三种策略

  • match:要求申请填写的信息跟CA设置信息必须一致
  • optional:可有可无,跟CA设置信息可不一致
  • supplied:必须填写这项申请信息
js 复制代码
 [ policy_match ]
  85 countryName             = match       //国家
  86 stateOrProvinceName     = match       //州或者省
  87 organizationName        = match       //公司名称 
  88 organizationalUnitName  = optional    //公司部门名称
  89 commonName              = supplied     
  90 emailAddress            = optional
 ​
  95 [ policy_anything ]
  96 countryName             = optional
  97 stateOrProvinceName     = optional
  98 localityName            = optional
  99 organizationName        = optional
 100 organizationalUnitName  = optional
 101 commonName              = supplied
 102 emailAddress            = optional

3.3 建立私有CA 实操:

  1. 创建CA所需要的文件及文件夹
js 复制代码
 [root@7-2 CA]# touch /etc/pki/CA/index.txt     //索引。生成证书索引数据库文件
 ​
 [root@7-2 CA]# echo 01 > /etc/pki/CA/serial     //证书列表。指定下一个颁发证书的序列号  必须是01  有格式要求
 ​
 [root@7-2 CA]# ls /etc/pki/CA/
 #若无 默认文件夹需要单独新建
 certs  crl  index.txt  newcerts  private  serial
  1. 生成证书私钥

有两种方法:

  • 方法一:一条命令搞定,生成私钥,并且修改权限
js 复制代码
 cd /etc/pki/CA/ 
 (umask 066; openssl genrsa -out private/cakey.pem 2048)     //用genrsa生成加密的私钥文件,名称是cakey.pem,2048是长度,越长越安全。小括号的作用是:只针对命令行,不会影响当前环境
  • 方法二:分步骤,先生成私钥,再修改权限
js 复制代码
 [root@localhost CA]# openssl genrsa -out private/cakey.pem 2048
 Generating RSA private key, 2048 bit long modulus
 ....................................................+++
 .......................................................................+++
 e is 65537 (0x10001)
 ​
 [root@localhost CA]# ll private/
 总用量 4
 -rw-r--r--. 1 root root 1675 8月   8 23:50 cakey.pem
 [root@localhost CA]# chmod  600 private/cakey.pem 
 [root@localhost CA]# ll private/
 总用量 4
 -rw-------. 1 root root 1675 8月   8 23:50 cakey.pem
  1. 生成CA自签名证书
js 复制代码
 [root@7-2 CA]# openssl req -new -x509 -key   /etc/pki/CA/private/cakey.pem  -days 3650 -out /etc/pki/CA/cacert.pem
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [XX]:CN           //国家
 State or Province Name (full name) []:jiangsu  //省
 Locality Name (eg, city) [Default City]:nanjing   //市区
 Organization Name (eg, company) [Default Company Ltd]:kgc   //公司名字
 Organizational Unit Name (eg, section) []:it    //部门
 Common Name (eg, your name or your server's hostname) []:www.cxk.com   //域名
 Email Address []:    //邮箱可以为空
 [root@7-2 CA]# ls
 cacert.pem  certs  crl  index.txt  newcerts  private  serial    //cacert.pem就是生成的证书,后缀可以加上证书的后缀名.crt
 ​
 #拆解命令:
 openssl req -new -x509 -key   /etc/pki/CA/private/cakey.pem  -days 3650 -out /etc/pki/CA/cacert.pem
 #拆解说明:
 -new:生成新证书签署请求
 -x509:专用于CA生成自签证书  协议x509
 -key:生成请求时用到的私钥文件
 -days n:证书的有效期限
 -out /PATH/TO/SOMECERTFILE: 证书的保存路径,规定是在/etc/pki/CA/下面

小拓展:证书解密

js 复制代码
 [root@7-2 CA]# openssl x509 -in cacert.pem  -noout -text   //解码

3.4 用户申请证书

  • 生成私钥 (一般以key结尾) 私钥
  • 利用生成的私钥 生成 证书申请文件(一般csr文件) csr
  • 生成证书文件(一般以crt结尾) crt
  1. 建立私钥
js 复制代码
 [root@localhost data]#mkdir  /data/app1
 [root@localhost data]#openssl  genrsa -out  /data/app1/app1.key 2048
 Generating RSA private key, 2048 bit long modulus
 ...........................................+++
 ...............................................................................................................................................................................................................+++
 e is 65537 (0x10001)
 [root@localhost data]#chmod 600 /data/app1/app1.key 
 ​
 ​
 (umask 066;openssl genrsa -out   /data/app1/app1.key 2048)
  1. 生成证书申请文件
js 复制代码
 [root@localhost data]#openssl req -new -key /data/app1/app1.key -out /data/app1/app1.csr
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [XX]:CN
 State or Province Name (full name) []:jiangsu
 Locality Name (eg, city) [Default City]:suzhou 
 Organization Name (eg, company) [Default Company Ltd]:kgc    
 Organizational Unit Name (eg, section) []:it
 Common Name (eg, your name or your server's hostname) []:www.kgc.cn     
 Email Address []:
 ​
 Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:
 An optional company name []:
 ​
  1. 颁发证书
js 复制代码
 [root@localhost data]#openssl ca -in /data/app1/app1.csr -out /etc/pki/CA/certs/app1.crt   -days 1000
 Using configuration from /etc/pki/tls/openssl.cnf
 Check that the request matches the signature
 Signature ok
 Certificate Details:
         Serial Number: 1 (0x1)
         Validity
             Not Before: Aug  8 16:58:52 2024 GMT
             Not After : May  5 16:58:52 2027 GMT
         Subject:
             countryName               = CN
             stateOrProvinceName       = jiangsu
             organizationName          = kgc
             organizationalUnitName    = it
             commonName                = www.kgc.cn
         X509v3 extensions:
             X509v3 Basic Constraints: 
                 CA:FALSE
             Netscape Comment: 
                 OpenSSL Generated Certificate
             X509v3 Subject Key Identifier: 
                 FB:49:A4:0C:16:C6:FF:AC:86:BB:7E:21:99:BE:3E:69:2C:B9:B8:41
             X509v3 Authority Key Identifier: 
                 keyid:1F:DD:EC:E0:8E:A8:CB:C5:66:45:5D:AE:67:B5:69:6A:1A:08:5C:13
 ​
 Certificate is to be certified until May  5 16:58:52 2027 GMT (1000 days)
 Sign the certificate? [y/n]:
 1 out of 1 certificate requests certified, commit? [y/n]y
 Write out database with 1 new entries
 Data Base Updated
 ​
 ​
 [root@localhost data]#cat /etc/pki/CA/index.txt
 V   270505165852Z       01  unknown /C=CN/ST=jiangsu/O=kgc/OU=it/CN=www.kgc.cn
 [root@localhost data]#cat /etc/pki/CA/serial
 02
 ​
  1. 验证证书是否有效
js 复制代码
 [root@localhost data]#openssl  ca -status  01
 Using configuration from /etc/pki/tls/openssl.cnf
 01=Valid (V)
 ​
 V  代表有效
 01 证书编号
 ​
 [root@localhost data]#openssl  ca -status  2
 Using configuration from /etc/pki/tls/openssl.cnf
 Serial 02 not present in db.
 Error verifying serial 2!
 ​
 [root@localhost data]#sz /etc/pki/CA/certs/app1.crt 
相关推荐
编程修仙13 分钟前
Collections工具类
linux·windows·python
芝麻团坚果29 分钟前
对subprocess启动的子进程使用VSCode python debugger
linux·ide·python·subprocess·vscode debugger
写点什么啦35 分钟前
[debug]不同的window连接ubuntu的vscode后无法正常加载kernel
linux·vscode·ubuntu·debug
wellnw42 分钟前
[ubuntu]编译共享内存读取出现read.c:(.text+0x1a): undefined reference to `shm_open‘问题解决方案
linux·ubuntu
不爱学习的YY酱44 分钟前
【操作系统不挂科】<CPU调度(13)>选择题(带答案与解析)
java·linux·前端·算法·操作系统
DC_BLOG1 小时前
Linux-Nginx虚拟主机
linux·运维·nginx
XY.散人1 小时前
初识Linux · 信号处理 · 续
linux·信号处理
1900431 小时前
linux复习5:C prog
linux·运维·服务器
猫猫的小茶馆2 小时前
【C语言】指针常量和常量指针
linux·c语言·开发语言·嵌入式软件
朝九晚五ฺ2 小时前
【Linux探索学习】第十五弹——环境变量:深入解析操作系统中的进程环境变量
linux·运维·学习