Linux之CA认证
Linux之CA认证#
简介#
CA 概述: Certificate Authority 的缩写,通常翻译成认证权威或者认证中心,主要用途是为用户发放数字证书。 CA 认证的流程和公安局派出所颁发身份证的流程一样
认证中心功能#
- 证书发放
- 证书更新
- 证书撤销
- 证书验证
CA功能#
- 用户认证
- 数据不可否认性
证书认证过程#
- 客户端向服务端发送请求文件
- 服务端接受客户端的请求文件确认申请者是否合法
- 服务端使用私钥将请求文件进行数据加密生成证书文件
- 将生成的证书文件传递给客户端
SSL#
简介#
SSL 概述: ( Secure Socket Layer) 安全套接字层,通过一种机制在互联网上提供密钥传输。其主要目标是保证两个应用间通信数据的保密性和可靠性, 可在服务器端和用户端同时支持的一种加密算法。目前主流版本 SSLV2、 SSLV3( 常用)。
SSL传输过程#
- 客户端请求一个安全会话协商加密算法
- 服务端向客户端发送证书
- 客户端接受服务端的证书确认是否为自己想要访问的网站
- 确认是客户端访问的网站 客户端会使用CA证书的公钥解密目标网站的证书 从而得到目标网站的公钥
- 客户端使用对称加密算法生成一把秘钥 然后使用目标网站的公钥对秘钥进行加密 传递给目标网站
- 目标网站使用私钥解密客户端传递的公钥 从而得到对称机密的秘钥 通过该秘钥进行数据安全传输
CA配置#
安装#
# 安装
[root@server ~]# yum -y install openssl
# 修改配置
[root@server ~]# vim /etc/pki/tls/openssl.cnf
basicConstraints=CA:FALSE ---> basicConstraints=CA:TRUE
证书以及私钥#
# 查看帮助
[root@server ~]# /etc/pki/tls/misc/CA -h
usage: /etc/pki/tls/misc/CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify
newcert:新证书
newreq:新请求
newreq-nodes:新的请求节点
newca:新的CA证书
sign:签证
verify:验证
# 生成CA证书
[root@server ~]# /etc/pki/tls/misc/CA -newca
# 查看公钥证书
[root@server ~]# cat /etc/pki/CA/cacert.pem
# 查看证书私钥
[root@server ~]# cat /etc/pki/CA/private/cakey.pem
在Apache搭建https#
配置思路#
- 生成请求文件发送给服务端
- 服务端接受请求文件使用私钥加密生成证书文件
- 将证书文件传递给客户端
- 客户端接受证书文件与http进行结合
私钥以及请求文件配置#
# 安装http
[root@client ~]# yum -y install httpd
# 生成证书请求私钥
# 由私钥推测服务端的公钥 但是不能由公钥推测出私钥
[root@client ~]# openssl genrsa -des3 -out /etc/httpd/conf.d/server.key # 使用des3算法 将私钥输出到/etc/httpd/conf.d/server.key
# 查看私钥
[root@client ~]# cat /etc/httpd/conf.d/server.key
# 使用私钥生成请求文件
[root@client ~]# openssl req -new -key /etc/httpd/conf.d/server.key -out /server.csr
# 查看请求文件
[root@client ~]# cat /server.csr
# 将证书传递给服务端
[root@client ~]# scp /server.csr 10.1.1.1:/
# 服务端进行验签
[root@server ~]# openssl ca -keyfile /etc/pki/CA/private/cakey.pem -cert /etc/pki/CA/cacert.pem -in /tmp/server.csr -out /server.crt # 使用生成的私钥以及正式进行验证签名
# 将签名证书传递给客户端
[root@server ~]# scp /server.crt 10.1.1.2:/tmp
Apache联动SSL#
# 安装ssl模块
[root@client ~]# yum -y install mod_ssl
# 配置apache加载证书文件
[root@client ~]# cp /server.crt /etc/httpd/conf.d/ # 将证书复制到改目录下
# 修改配置文件
[root@client ~]# vim /etc/httpd/conf.d/ssl.conf
# 修改证书以及私钥的路径
SSLCertificateFile /etc/pki/tls/certs/localhost.crt ---> SSLCertificateFile /etc/httpd/conf.d/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key ---> SSLCertificateKeyFile /etc/httpd/conf.d/server.key
# 重复服务
[root@client ~]# systemctl restart httpd
# 查看服务是否启动
[root@client ~]# netstat -aunpt | grep httpd
服务测试#
[root@client ~]# vim /var/www/html/index.html
Welcome to Apache over SSL

在Nginx搭建https#
安装nginx#
# 创建yum源
[root@client ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/7/$basearch/
gpgcheck=0
enabled=1
# 安装
[root@client ~]# yum -y install nginx
# 启动
[root@client ~]# systemctl start nginx
修改配置文件#
# 备份配置文件
[root@client ~]# cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
# 添加虚拟主机
[root@client ~]# vim /etc/nginx/conf.d/default.conf
server {
listen 443 ssl;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 版本
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5; # 加密方式
ssl_certificate /etc/httpd/conf.d/server.crt; #签名
ssl_certificate_key /etc/httpd/conf.d/server.key; # 私钥
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m
}
# 检测主机
[root@client ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# 重启nginx
[root@client html]# systemctl stop nginx
[root@client html]# nginx
[root@client html]# netstat -aunpt | grep nginx
测试#
[root@client html]# echo "Welcome to Nginx over SSL" > /usr/share/nginx/html/index.html

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!