Linux之CA认证

简介

CA 概述: Certificate Authority 的缩写,通常翻译成认证权威或者认证中心,主要用途是为用户发放数字证书。 CA 认证的流程和公安局派出所颁发身份证的流程一样

认证中心功能

  • 证书发放
  • 证书更新
  • 证书撤销
  • 证书验证

CA功能

  • 用户认证
  • 数据不可否认性

证书认证过程

  • 客户端向服务端发送请求文件
  • 服务端接受客户端的请求文件确认申请者是否合法
  • 服务端使用私钥将请求文件进行数据加密生成证书文件
  • 将生成的证书文件传递给客户端

Linux之CA认证

SSL

简介

SSL 概述: ( Secure Socket Layer) 安全套接字层,通过一种机制在互联网上提供密钥传输。其主要目标是保证两个应用间通信数据的保密性和可靠性, 可在服务器端和用户端同时支持的一种加密算法。目前主流版本 SSLV2、 SSLV3( 常用)。

SSL传输过程

  1. 客户端请求一个安全会话协商加密算法
  2. 服务端向客户端发送证书
  3. 客户端接受服务端的证书确认是否为自己想要访问的网站
  4. 确认是客户端访问的网站 客户端会使用CA证书的公钥解密目标网站的证书 从而得到目标网站的公钥
  5. 客户端使用对称加密算法生成一把秘钥 然后使用目标网站的公钥对秘钥进行加密 传递给目标网站
  6. 目标网站使用私钥解密客户端传递的公钥 从而得到对称机密的秘钥 通过该秘钥进行数据安全传输

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

配置思路

  1. 生成请求文件发送给服务端
  2. 服务端接受请求文件使用私钥加密生成证书文件
  3. 将证书文件传递给客户端
  4. 客户端接受证书文件与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	

Linux之CA认证

服务测试

[root@client ~]# vim /var/www/html/index.html
	Welcome to Apache over SSL

Linux之CA认证

在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

Linux之CA认证

测试

[root@client html]# echo "Welcome to Nginx over SSL" > /usr/share/nginx/html/index.html

Linux之CA认证