一、创建私有CA并进行证书申请。
1、创建私有CA自签名证书
首先安装openssl-libs包,查看配置文件 cat /etc/pki/tls/openssl.cnf
1-1、创建/etc/pki/CA目录
[root@centos8 ~]#mkdir -pv /etc/pki/CA/{certs,crl,newcerts,private}
[root@centos8 ~]#tree /etc/pki/CA/
1-2、在/etc/pki/CA目录下创建私钥,查看私钥文件
[root@centos8 ~]# cd /etc/pki/CA
[root@centos8 CA]#(umask 066; openssl genrsa -out private/cakey.pem 2048)
[root@centos8 CA]#cat private/cakey.pem
1-3、给CA颁发自签名证书:
[root@centos8 ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem
1-4、在centos上用命令将证书文件的base64编码转换为一个译读的格式进行查看证书文件
[root@centos8 ~]# openssl x509 -in /etc/pki/CA/cacert.pem -noout -text
或者将证书文件cacert.pem传至windows桌面,修改文件名为cacert.pem.crt,双击可以看到下面显示
[root@centos8 ~]#sz /etc/pki/CA/cacert.pem
2、用户生成私钥和证书申请
2-1、生成用户私钥文件
[root@centos8 ~]#mkdir /data/app1
[root@centos8 ~]#(umask 066; openssl genrsa -out /data/app1/app1.key 2048)
[root@centos8 ~]#cat /data/app1/app1.key
2-2、生成用户申请文件
[root@centos8 ~]#openssl req -new -key /data/app1/app1.key -out /data/app1/app1.csr
[root@centos8 ~]#ll /data/app1/
2-3、CA颁发证书
index.txt和serial文件在颁发证书时需要使用,如果不存在会出现错误,先创建文件如下:
生成证书索引数据库文件:
[root@centos8 ~]# touch /etc/pki/CA/index.txt
指定第一个颁发证书的序列号
[root@centos8 ~]# echo 0F > /etc/pki/CA/serial
通过openssl ca命令指定证书申请文件的路径:/data/app1/app1.csr
再通过-out指定输出路径/etc/pki/CA/certs/app1.crt,指定证书有效期1000天 -days 1000
[root@centos8 ~]# openssl ca -in /data/app1/app1.csr -out /etc/pki/CA/certs/app1.crt -days 1000
查看证书:
[root@centos8 ~]# cat /etc/pki/CA/certs/app1.crt
查看证书表调:
[root@centos8 ~]# openssl x509 -in /etc/pki/CA/certs/app1.crt -noout -issuer
查看给谁颁发的证书:
[root@centos8 ~]# openssl x509 -in /etc/pki/CA/certs/app1.crt -noout -subject
查看证书有效期:
[root@centos8 ~]# openssl x509 -in /etc/pki/CA/certs/app1.crt -noout -dates
查看证书序列号:
[root@centos8 ~]# openssl x509 -in /etc/pki/CA/certs/app1.crt -noout -serial
查看证书的有效性:
[root@centos8 ~]# openssl ca -status 0F
3、将证书相关文件发送至客户端使用
[root@centos8 data]# cp /etc/pki/CA/certs/app1.crt /data/app1/
至此CA颁发证书的整个过程已经完成,下面是有关CA证书的一些其他功能和用法.
*、给第二家单位颁发证书,则执行2-1开始的步骤(文件路径改一下),如果默认必须一致的三项(国家,地区,机构)有不一样的地方则会报错。解决方法有两种:1、将app1.csr文件重新生成。2、修改openssl的配置文件
修改openssl配置文件
[root@centos8 ~]# vim /etc/pki/tls/openssl.cnf
*、一个证书申请多个证书文件的方法:
[root@centos8 ~]# vim /etc/pki/CA/index.txt.attr
执行2-3的命令,将申请的文件名换一下
[root@centos8 ~]# openssl ca -in /data/app1/app1.csr -out /etc/pki/CA/certs/app1-2.crt -days 1000
*、吊销证书的方法:
查看证书文件的信息,得出证书编号11
[root@centos8 ~]# cat /etc/pki/CA/index.txt吊销证书编号为11的证书文件
[root@centos8 ~]# openssl ca -revoke /etc/pki/CA/newcerts/11.pem
生成证书吊销列表文件
指定第一个吊销证书的编号,注意:第一次更新证书吊销列表前,才需要执行
[root@centos8 ~]# echo 01 > /etc/pki/CA/crlnumber
更新证书吊销列表
[root@centos8 ~]# openssl ca -gencrl -out /etc/pki/CA/crl.pem
查看crl文件:
[root@centos8 ~]# openssl crl -in /etc/pki/CA/crl.pem -noout -text
#将此文件crl.pem传到windows上并改后缀为crl.pem.crl,双击可以查看以下显示
[root@centos8 ~]#sz /etc/pki/CA/crl.pem
*非交互式申请证书方法
二、总结ssh常用参数、用法
ssh命令是ssh客户端,允许实现对远程系统经验证地加密安全访问。ssh客户端配置文件是:/etc/ssh/ssh_config
ssh命令配合的常见选项:
-p port:远程服务器监听的端口
ssh 192.168.1.8 -p 2222
-b 指定连接的源IP
ssh 192.168.1.8 -p 2222 -b 192.168.1.88
-v 调试模式
ssh 192.168.1.8 -p 2222 -v
-C 压缩方式
-X 支持x11转发
支持将远程linux主机上的图形工具在当前设备使用
-t 强制伪tty分配,如:ssh -t remoteserver1 ssh -t remoteserver2 ssh
remoteserver3
-o option 如:-o StrictHostKeyChecking=no
-i <file> 指定私钥文件路径,实现基于key验证,默认使用文件: ~/.ssh/id_dsa,
~/.ssh/id_ecdsa, ~/.ssh/id_ed25519,~/.ssh/id_rsa等
三、总结sshd服务常用参数、用法
服务器端的配置文件: /etc/ssh/sshd_config
常用参数:
Port #端口号
ListenAddress ipLoginGraceTime 2m #宽限期
PermitRootLogin yes #默认ubuntu不允许root远程ssh登录
StrictModes yes #检查.ssh/文件的所有者,权限等
MaxAuthTries 6
MaxSessions 10 #同一个连接最大会话
PubkeyAuthentication yes #基于key验证
PermitEmptyPasswords no #空密码连接
PasswordAuthentication yes #基于用户名和密码连接
GatewayPorts no
ClientAliveInterval 10 #单位:秒
ClientAliveCountMax 3 #默认3
UseDNS yes #提高速度可改为no
GSSAPIAuthentication yes #提高速度可改为no
MaxStartups #未认证连接最大值,默认值10
Banner /path/file
#以下可以限制可登录用户的办法:
AllowUsers user1 user2 user3
DenyUsers
AllowGroups
ssh服务的最佳实践
建议使用非默认端口
禁止使用protocol version 1
限制可登录用户
设定空闲会话超时时长
利用防火墙设置ssh访问策略仅监听特定的IP地址
基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12|
xargs
使用基于密钥的认证
禁止使用空密码
禁止root用户直接登录
限制ssh的访问频度和并发在线数
经常分析日志