• Linux之CA认证


    Linux之CA认证

    简介

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

    认证中心功能

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

    CA功能

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

    证书认证过程

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

    1600696471006

    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	
    

    服务测试

    [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
    
  • 相关阅读:
    leetcode Maximum Product Subarray
    JAVA中的泛型类型不可以直接初始化
    android里getView,inflate,listview问题
    二元查找树转换成一个排序的双向链表
    c语言函数指针
    C++初始化小问题
    ODPS中的TaskContext类里面的write函数
    Eclipse里面新建servlet 是否需要配置web.xml
    检测鼠标是否在标签上
    继承
  • 原文地址:https://www.cnblogs.com/SR-Program/p/13712686.html
Copyright © 2020-2023  润新知