证书及免密登录

https的工作原理

网址或服务器已事先申请了ca证书,携带有网站的公钥——>用户通过浏览器访问网站——>网站的证书会自动通过浏览器发给客户端——>客户端浏览器通过内置校验信息校验证书是否可信——>(如无效会显示warning报警——>)如有效会生成一个随机的key,相当于对称密钥——>通过证书里的公钥加密key传给网站——>网站通过自己的私钥解开得到对称密钥——>后续通过对称密钥key互通即可

私钥

随机的、一次性的

#生成私钥
openssl genrsa -out /data/app.key -aes192
/data/app.key       #存放路径
-aes192             #加密私钥,不可直接使用私钥

#解密所加密的私钥
openssl rsa in /data/app.key -out /data/app2.key

#通过私钥导出公钥
openssl rsa -in /data/app.key -pubout -out /data/app.pubkey

公钥交换过程

客户端发送连接请求–>服务器发送公钥和会话密钥id–>客户端将公钥存放于家目录的/.ssh/known_hosts文件中–>客户端将自身公钥和id异或得到res–>用服务器的公钥加密res发送给服务器–>后续通过公钥加密通信即可

再次连接时,客户端发送请求–>服务器用私钥加密信息包发送给客户端–>客户端用公钥解密获取信息–>如解不开则说明已不是原理机器,断开连接

#a异或b=c,c异或a=b,任意两者异或可得到另外第三个

搭建私有ca证书

路径在/etc/pki/tls/openssl.cnf

#配置文件格式
[ ca ]
default_ca = CA_default # The default ca section

[ CA_default ]

dir     = /etc/pki/CA       # Where everything is kept
certs       = $dir/certs        # Where the issued certs are kept
crl_dir     = $dir/crl      # Where the issued crl are kept
database    = $dir/index.txt    # database index file.
#unique_subject = no            # Set to 'no' to allow creation of
                    # several certs with same subject.
new_certs_dir   = $dir/newcerts     # default place for new certs.

certificate = $dir/cacert.pem   # The CA certificate
serial      = $dir/serial       # The current serial number
crlnumber   = $dir/crlnumber    # the current crl number
                    # must be commented out to leave a V1 CRL
crl     = $dir/crl.pem      # The current CRL
private_key = $dir/private/cakey.pem# The private key

x509_extensions = usr_cert      # The extensions to add to the cert

[ policy_match ]
countryName     = match                    match为必须相同;optional为可选,不需相同
stateOrProvinceName = match
organizationName    = match
organizationalUnitName  = optional
commonName      = supplied
emailAddress        = optional

搭建ca证书

#创建相关文件夹
mkdir /etc/pki/CA/certs  /etc/pki/CA/crl  /etc/pki/CA/newcerts  /etc/pki/CA/private

#创建相关需求文件
touch /etc/pki/CA/index.txt                证书的索引信息
echo 01 > /etc/pki/CA/serial               证书的序列号

#生成私钥
cd /etc/pki/CA/
umask 600;openssl genrsa -out private/cakey.pem             固定路径

#自签名证书
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out  /etc/pki/CA/cacert.pem
#req 请求  -new 创建新证书  -x509 专用于生成自签名证书  -days 有效期 -key 私钥文件存放路径 -out 证书存放路径
#除了时间,其余都是固定写法

#相关信息
countryName     = match                         国家编码
stateOrProvinceName = match                     省市,如需不一样可更改配置文件为optional
Locality Name                                   城市
organizationName    = match                     公司
organizationalUnitName  = optional              部门
commonName      = supplied                      给哪个服务用,一般是域名,自签名用ca.wei.org  
emailAddress        = optional                  邮箱

#国家编码 https://country-code.cl/

申请并颁发证书

#用户需生成私钥
umask 066; openssl genrsa -out   /data/www.key          

#生成申请证书文件
openssl req -new -key /data/www.key -out /data/www.csr       将该文件发送到ca审核即可
#相关信息
countryName     = match                         国家编码
stateOrProvinceName = match                     省市,如需不一样可更改配置文件为optional
Locality Name                                   城市
organizationName    = match                     公司
organizationalUnitName  = optional              部门
commonName      = supplied                      给哪个服务用,一般是域名,自签名用ca.wei.org  
emailAddress        = optional                  邮箱

#颁发证书
openssl ca -in /data/www.csr -out   /etc/pki/CA/certs/www.crt -days 100
               申请证书文件           将来生成的证书文件存放路径        有效期

win系统中改证书文件后缀为crt,然后安装即可使用

查看颁发的证书信息

cat index.txt
或者
openssl x509 -in /etc/pki/CA/cacert.pem -noout -text    #查看自签名证书具体内容

吊销证书

#吊销证书
openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
#SERIAL.pem  证书文件,路径在/etc/pki/CA/certs下

#证书吊销列表,第一次吊销才需执行,用于存放被吊销的证书列表文件
echo 01 > /etc/pki/CA/crlnumber

#更新吊销列表文件
openssl ca -gencrl -out /etc/pki/CA/crl.pem

#查看吊销列表文件
openssl crl -in /etc/pki/CA/crl.pem -noout -text

简单化创建证书

将centos7的/etc/pki/tls/certs/Makefile拷贝过来直接用
在路径/etc/pki/tls/certs/下用make命令即可
可更改Makefile文件的%.key的值将-aes128去掉

用户免密登录连接,基于key验证

一对一

#生成客户端的公、私钥,存放于.ssh目录下,注意保护该机器安全,可免密连接多台
[root@rocky2  ~]#ssh-keygen

#将文件夹拷贝去目标ip,也可不指定用户,默认在目标同样的当前用户家目录下的.ssh/authorized_keys,需要输入目标用户的密码
[root@rocky2  ~]#ssh-copy-id root@10.0.0.200

#改了密码也还能连,可更改公、私钥即可

集群免密连接

##原理是共用一套钥匙
#生成公、私钥
ssh-keygen

#拷贝文件夹传给自己的主机,输入自己的密码
ssh-copy-id 127.0.0.1

#将.ssh文件夹拷贝到需要连接的机器,指定文件存放路径即用户家目录,输入对方的密码,第一次连接需按yes
scp -r .ssh 10.0.0.200:/root/

#不按yes可加选项
-o StrictHostKeyChecking=no

可结合ping命令确认连接多台主机,实现脚本化

[root@rocky2  ~]#cat a.sh
#!/bin/bash
PASS=123456              #密码
#设置网段最后的地址,4-255之间,越小扫描越快
END=254

IP=`ip a s eth0 | awk -F'[ /]+' 'NR==3{print $3}'`
NET=${IP%.*}.
#取ip设为变量

. /etc/os-release
#判断主机是否为centos或rocky

rm -f /root/.ssh/id_rsa
[ -e ./SCANIP.log ] && rm -f SCANIP.log
#清空环境

for((i=3;i<="$END";i++));do
    ping -c 1 -w 1  ${NET}$i &> /dev/null  && echo "${NET}$i" >> SCANIP.log &
done
wait
#后台执行刷遍全部ip是否能ping通存于文件中

ssh-keygen -P "" -f /root/.ssh/id_rsa
if [ $ID = "centos" -o $ID = "rocky" ];then
    rpm -q sshpass || yum -y install sshpass
else
    dpkg -i sshpass &> /dev/null || apt -y install sshpass
fi
#根据条件判断下载sshpass包

sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no $IP 
#连接主机并拷贝key文件传输到自己的主机

AliveIP=(`cat SCANIP.log`)
for n in ${AliveIP[*]};do
    sshpass -p $PASS scp -o StrictHostKeyChecking=no -r /root/.ssh root@${n}:
done
#结合数组,刷遍所有ping通的主机拷贝key文件

#把.ssh/known_hosts拷贝到所有主机,使它们第一次互相访问时不需要输入回车
for n in ${AliveIP[*]};do
    scp /root/.ssh/known_hosts ${n}:.ssh/
done

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值