马哥教育网络21期+第十一周练习博客(上)

马哥教育网络21期+第十一周练习博客(上)

1、详细描述一次加密通讯的过程,结合图示最佳。

加密同性过程中使用到最重要的就是openssl
    安全加密传输过程中要确保如下几个环节:
    保密性:数据保密性,隐私性
    完整性:数据完整性,系统完整性
    可用性:数据的可用性,系统可用性
安全攻击:
    被动攻击:窃听
    主动攻击:伪装,重放,消息篡改,拒绝服务等等
面对以上的安全攻击定义了如下的安全机制:
    数据加密,数字签名,访问控制,数据完整性,认证交换机制,流量填充,路由控制,公证等等
安全服务:
    认证服务
    访问控制
    数据的保密性:连接保密性,无连接保密性,选择域保密性,流量保密性
    数据完整性
    不可否认性
在确保以上的安全服务当中采用了密码算法和协议进行加密:
    密码算法和协议:对称加密,公钥加密,单向加密,认证协议
        对称加密:加密与解密使用同一个密钥,将原始数据分割成固定大小的块,逐个进行加密;
            缺点:密钥过多,一个连接就要使用一组密钥进行加密,密钥分发;
        公钥加密:密钥成对出现,公钥公开给所有人,私钥自己留存,但必须保证其私密性
            特点:用公钥加密的数据,必须使用与之配对的私钥进行解密,反正亦然;
        在公钥加密中如何防止被篡改其公钥呢?
        数字签名:让接收方确认发送方身份;
        密钥交换:发送方用对方公钥加密一个堆成密钥,并发送给对方,然后进行数据加密;
    单向加密:只能加密,无法解密,提取数据指纹;
        特性:定长输出,雪崩效应
        功能:保证了数据的完整性

综上所述:一次加密通信过程:
    例如两者A,B进行加密通信:
    双方建立TCP连接,B将自己的CA证书发送给A,A使用存留本机的CA证书库中找到其公钥进行解密,如果能解密说明证书可信任,下一步比对其主机名,如果主机名正确可以进行交换,下一步使用单向加密,加密其特征码与证书中的特征码进行比对,如果正则,此证书则完全被信任,下一步进行数据交换!
    A将呀发送的内容进行编写发送给B;
    使用单向加密算法提取数据的特征码,用自己的私钥加密这段特征码附加在这段数据后面
    A再用对称密钥将这整段数据进行加密,此时B是没有这段对称加密的密钥的,那么可以使用B的公钥加密这段对称密钥附加在上一段数据后面。
    B使用自己的私钥解密对称加密得到对称加密密钥,使用对称解密算法得到明文数据和特征码,使用对方的公钥解密特征码,使用同样的算法提取特征码,说明数据完整性得到验证;
    以上密钥需要在网上传送所以这里需要使用到密钥交换协议:IKE
    A需要拿到B的证书,B需要拿到A的证书,双方发送由第三方信任的签署机构发送的证书,
    需要找到发行者的名称与发行者的签名,用本地CA的公钥解密发行者的签名比较如果正确是可靠
    使用X509里面的加密算法和特征码做比较,如果正确,证书是可信的!

P9PT0TZG(U9[DBON3_DOLH6.png

2、描述创建私有CA的过程,以及为客户端发来的证书请求进行办法证书。
实验环境:准备2太虚拟机
CA的配置文件在
[root@localhost CA]# cat /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 ctificates 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
RANDFILE    = $dir/private/.rand    # private random number file

x509_extensions = usr_cert      # The extentions to add to the cert

按照以上的配置文件将没有的文件进行创建:
[root@localhost CA]# touch index.txt
[root@localhost CA]# echo 01 > serial

将其中一台服务器创建为CA进行证书的颁发:
    1,先建立CA的私有密钥:
    [root@localhost CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)
    建立私钥密钥,但是这里生成的密钥文件必须是cakey.pem
    2,提取CA私钥文件中的公钥文件:
    [root@localhost CA]# openssl req -new -x509 -key  private/cakey.pem -days 7300 -out cacert.pem 
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [XX]:CN
    State or Province Name (full name) []:Beijing
    Locality Name (eg, city) [Default City]:Beijing
    Organization Name (eg, company) [Default Company Ltd]:xitongjicheng
    Organizational Unit Name (eg, section) []:Ops
    Common Name (eg, your name or your server's hostname) []:ca.xitongjicheng.com
    Email Address []:wanghongkai@163.com
以上就是CA创建完毕!!!
将另外一台主机模拟成需要申请CA证书的公司!这里我们使用http进行模拟!!在http下创建一个目录为ssl
同样生成私钥文件:
[root@localhost httpd]# (umask 077; openssl genrsa -out httpd.key 2048)
提出公钥文件:
[root@localhost httpd]# openssl req -new -key httpd.key -days 365 -out httpd.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:xitongjicheng
Organizational Unit Name (eg, section) []:Ops
Common Name (eg, your name or your server's hostname) []:WEB1.xitongjicheng.com
Email Address []:wang#@163.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

然后将B主机要申请的CA发送给CA主机!
    [root@localhost httpd]# scp httpd.csr root@172.16.0.124 /tmp/
然后CA对其申请进行认证:
[root@localhost CA]# openssl ca -in /tmp/httpd.csr -out newcerts/web1xitongjicheng.crt -days 365
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
    Serial Number: 1 (0x1)
    Validity
        Not Before: Sep  5 23:52:50 2016 GMT
        Not After : Sep  5 23:52:50 2017 GMT
    Subject:
        countryName               = CN
        stateOrProvinceName       = Beijing
        organizationName          = xitongjicheng
        organizationalUnitName    = Ops
        commonName                = WEB1.xitongjicheng.com
        emailAddress              = wang#@163.com
    X509v3 extensions:
        X509v3 Basic Constraints: 
            CA:FALSE
        Netscape Comment: 
            OpenSSL Generated Certificate
        X509v3 Subject Key Identifier: 
            FB:7D:FF:33:03:30:AE:3F:62:48:AE:95:9B:15:36:87:9A:CE:74:38
        X509v3 Authority Key Identifier: 
            keyid:76:DB:F3:67:97:88:C7:CA:E1:20:E4:55:62:38:CE:08:92:4D:FC:AC

Certificate is to be certified until Sep  5 23:52:50 2017 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated-->这里提示证书已经更新!
这里需要主机要新的生成证书复制一份到certs目录下进行保存!
[root@localhost CA]# cp newcerts/web1xitongjicheng.crt certs/
将已签好的证书发还给客户端:
root@localhost CA]# scp newcerts/web1xitongjicheng.crt 172.16.0.2:/etc/httpd/ssl/

在客户端查看证书签发的内容:
[root@localhost ssl]# openssl x509 -in /etc/httpd/ssl/web1xitongjicheng.crt -noout -text
Certificate:
Data:
    Version: 3 (0x2)
    Serial Number: 1 (0x1)
Signature Algorithm: sha1WithRSAEncryption
    Issuer: C=CN, ST=Beijing, L=Beijing, O=xitongjicheng, OU=Ops, CN=ca.xitongjicheng.com/emailAddress=wanghongkai@163.com
    Validity
        Not Before: Sep  5 23:52:50 2016 GMT
        Not After : Sep  5 23:52:50 2017 GMT
    Subject: C=CN, ST=Beijing, O=xitongjicheng, OU=Ops, CN=WEB1.xitongjicheng.com/emailAddress=wang#@163.com
总结:
.key格式:私有的密钥    
.crt格式:证书文件,certificate的缩写    
.csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写    
.crl格式:证书吊销列表,Certificate Revocation List的缩写    
.pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式

这样一次完整私建CA和签发证书完成!


原创文章,作者:wostop,如若转载,请注明出处:http://www.178linux.com/48883

(0)
wostopwostop
上一篇 2016-09-26 07:43
下一篇 2016-09-26 07:43

相关推荐

  • 文件压缩和软件包管理

    Linux压缩打包 压缩是一种通过特定的算法来减小计算机文件大小的机制。有利于文件在网络上的传输,节约带宽。在Linux中,压缩是以后缀名区分文件的。(Linux中很少见)压缩文件都会呈现醒目的红色。 注意!以下压缩软件只能压缩文件而不能压缩目录。不能对目录直接压缩! compress命令 compress这个命令是非常老旧的一款命令,现在基本已经不用了 而…

    Linux干货 2016-08-24
  • 马哥教育网络19期+第十七周课程练习

    1、结合图形描述LVS的工作原理;     LVS (Linux Virtual Server)是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结…

    Linux干货 2016-09-05
  • linux上的文件查找工具:locate和find

    一、非实时超找工具 locate     1、locate是查询系统上预建的文件索引数据库/var/lib/mlocate/mlocate.db文件索引实在系统比较空闲的时候自动进行的,是系统的周期性任务,因为是周期性任务,所以有些短期的数据无法更新到数据库,如果需要马上应用,乣管理员手动更新数据库,用命令updatedb来执行。同时索引…

    Linux干货 2016-08-16
  • UID SGID与chmod 777的一些问题

    先来看问题 问题来了:echo的行为返回是对的还是vi是对的? 现场分析: vi 和 echo 都被设置为SGID权限。 abc文件所在的父目录权限是777 echo无法写abc文件,而vi是可以的 当时被问到这个问题时,我也是一征,怎么会这样。加之SUID,SGID在企业应用很少,如此这么久早忘了一干二净,只是赶紧去补课~,但经过30MIN后依然没有找到问…

    Linux干货 2016-08-08
  • 基于kubernetes构建Docker集群管理详解

    一、前言        Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件,目前最新版本为0.6.2。本文介绍如何基于Centos7.0构建Kubernetes平台,在正式介绍…

    2015-03-10
  • 07程序包管理器简介

    源代码命名方式,name-version.tar.gz|bz2|xz,    –>version:major.minor.release 要将一个源代码程序安装到Linux系统上,一般有两个方法。 1、找到源代码,手动编译安装。解压,./configure  –> make –&g…

    Linux干货 2016-11-03

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-27 09:34

    写的很好,图画的也很漂亮,希望继续保持