zoukankan      html  css  js  c++  java
  • Linux 之加密类型,CA,Openssl,Openssh

    TCP/IP:安全
    A------->B
    机密性:明文传输(ftp,http,smtp,telnet),被窃听
    完整性:消息被篡改
    身份验证:你访问的主机就是你真实要访问的那台,而不是钓鱼网站

    机密性:
    加密,即转换规则。算法不变,密钥规则要变。
    对称加密:加密和解密的密钥是一致的

    完整性:
    单向加密算法:提取数据特征码
    输入一样:输出必定一样
    雪崩效率:输入的微小改变,将会引起结果的巨大改变
    定长输出:无论原始数据是多大,结果大小都是相同的
    不可逆:无法根据特征码还原原来的数据

    协商生成密码:密钥交换(Internet Key Exchange,IKE)
    Diffie-Hellman协议
    A: p(大质数),g(生成数)
    A:x(只有A知道)
    B: y(只有B知道)
    A: 传输g^x%p--->B
    B: 传输g^y%p--->A
    A: 收到以后计算(g^y%p)^x=g^y^x%p
    B: 收到以后计算(g^x%p)^y=g^x^y%p

    公钥加密算法:非对称加密算法
    密钥对:
    公钥:p
    私钥:s
    发送方用自己的私钥加密数据,可以实现身份验证
    发送方用对方的公钥加密数据,可以保证数据机密性

    PKI:Public Key Infrastructure(基础)
    CA:Certificate Authority

    CRL:证书吊销列表

    x509,pkcs12等证书格式
    x509:公钥及其有效期限,
    证书的合法拥有者,
    证书改如何被使用,
    CA的信息
    CA签名的校验码

    PKI:TLS/SSL:x509的证书格式

    PKI:OpenGPG:

    SSL:Secure Socket Layer(安全的套接字层),网景公司研发
    嵌套在应用层和传输层之间。应用程序在到达传输层之前调用SSL模块的话就会被加密。
    TLS:Transport Layer Security,更为开放,不为任何公司所有。

    OSI七层模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
    TCP/IP四层模型:网络接口层,网间层,传输层,应用层

    对称加密:
    DES:Data Encrption Standard,56bit
    3DES:
    AES:Advanced Encrption Standard,128bit
    AES192,AES256,AES512
    Blowfish:

    加密工具:openssl,gpg

    单向加密(定长输入):
    MD4,MD5,SHA1,SHA192,SHA256,SHA384,SHA512,CRC-32

    公钥加密(非对称加密):
    身份认证
    数据加密
    密钥交换
    RSA:加密、签名
    DSA:签名
    ElGamal:

    OpenSSL: SSL的开源实现
    libcrypto:加密库
    libssl:TSL/SSL的实现(基于会话的、实现了身份认证、数据机密性和会话完整性的库)
    openssl:多用途命令行工具(实现私有证书颁发机构)

    Openssl实现私有CA:
    1、生成一对密钥
    公钥是源自私钥,从私钥提取的。
    生成私钥:openssl genrsa -out KEYFILENAME NUMBITS
    提取公钥:openssl rsa -in KEYFILENAME -pubout

    2、生成自签署证书


    Openssh:
    1.基于口令的传输
    2.基于密钥的传输

    基于密钥的认证:
    1.生产一对密钥
    2.将公钥传输至服务器端某用户的.ssh/authorized_keys文件中
    3.测试登陆

    [hadoop@saltstack1 .ssh]$ ssh-copy-id -i id_rsa.pub root@192.168.144.50
    10
    root@192.168.144.50's password:
    Now try logging into the machine, with "ssh 'root@192.168.144.50'", and check in:

    .ssh/authorized_keys

    to make sure we haven't added extra keys that you weren't expecting.

    [hadoop@saltstack1 .ssh]$ ssh -l root 192.168.144.50
    Last login: Wed Nov 30 12:34:29 2016 from saltstack1
    [root@saltstack2 ~]# exit
    logout




    x509:
    公钥及其有效期限
    证书的合法拥有者
    证书该如何被使用
    CA的信息
    CA签名的校验码

    TLS/SSL:x509证书

    对称加密工具: openssl AES,AES192,AES256,AES512
    openssl:
    libcrypto:加密库
    libssl:TSL/SSL的实现
    openssl:模拟实现私有证书颁发机构

    whatis

    openssl enc -des3 -salt -a -in inittab -out inittab.des3
    以des3的方式加密inittab


    openssl enc -des3 -salt -a -in inittab.des3 -out inittab
    以des3的方式解密inittab.des3

    计算md5值
    md5sum inittab

    openssl做私有CA:
    1、先生成一对秘钥
    2、生成自签署证书
    公钥是从私钥中提取的,genrsa是产生私钥的。


    openssl genrsa
    openssl genrsa 2048 > server.key
    (umask 077;openssl genrsa -out server1024.key 1024)

    产生与之对应的公钥
    openssl rsa -in server1024.key -pubout

    生成自签的证书:
    [root@localhost ~]# openssl req -new -x509 -key server1024.key -out server.crt -days 365
    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) []:GuangDong
    Locality Name (eg, city) [Default City]:ShenZhen
    Organization Name (eg, company) [Default Company Ltd]:EBANK
    Organizational Unit Name (eg, section) []:Tech
    Common Name (eg, your name or your server's hostname) []:dell.ebank.com
    Email Address []:admin@ebank.com


    查看证书的信息
    [root@localhost ~]# openssl x509 -text -in server.crt
    Certificate:
    Data:
    Version: 3 (0x2)
    Serial Number: 17961667793651459699 (0xf944a9b17e2b6673)
    Signature Algorithm: sha256WithRSAEncryption
    Issuer: C=CN, ST=GuangDong, L=ShenZhen, O=EBANK, OU=Tech, CN=dell.ebank.com/emailAddress=admin@ebank.com
    Validity
    Not Before: Apr 17 11:53:47 2017 GMT
    Not After : Apr 17 11:53:47 2018 GMT
    Subject: C=CN, ST=GuangDong, L=ShenZhen, O=EBANK, OU=Tech, CN=dell.ebank.com/emailAddress=admin@ebank.com
    Subject Public Key Info:
    Public Key Algorithm: rsaEncryption
    Public-Key: (1024 bit)
    Modulus:
    00:a7:8b:10:6b:d6:5b:ae:29:51:83:73:c1:f0:aa:
    b8:35:96:40:07:bb:26:30:a8:1b:69:9f:50:e4:2b:
    b0:e3:45:02:cc:f8:93:e9:92:03:d2:2a:77:59:56:
    cc:1c:19:b1:a4:70:2e:09:f6:d6:41:52:52:32:a6:
    61:46:d5:85:e2:d7:9e:ce:33:6f:27:84:3d:f2:6f:
    d0:3c:ec:35:1d:14:d4:5f:3a:77:9b:33:d0:46:81:
    60:f6:83:3d:93:85:54:dd:78:23:50:75:0b:3d:18:
    d9:08:dd:29:2b:7a:a8:4c:b6:3b:77:20:1a:17:eb:
    20:d0:00:a0:66:2a:cb:a0:6f
    Exponent: 65537 (0x10001)
    X509v3 extensions:
    X509v3 Subject Key Identifier:
    FA:FF:FF:44:36:89:87:5D:43:DE:19:6B:A9:5A:D3:B8:68:25:0A:F7
    X509v3 Authority Key Identifier:
    keyid:FA:FF:FF:44:36:89:87:5D:43:DE:19:6B:A9:5A:D3:B8:68:25:0A:F7

    X509v3 Basic Constraints:
    CA:TRUE
    Signature Algorithm: sha256WithRSAEncryption
    20:fa:86:36:29:05:66:e4:b3:3b:75:e5:59:0d:77:1c:6d:90:
    1f:59:cc:3f:90:e6:f7:96:51:0c:6e:2e:c5:fd:e0:5e:65:aa:
    e8:18:cc:e2:b2:f1:81:af:e2:85:c6:8f:49:d1:da:98:ae:63:
    db:45:19:0e:e0:b4:62:f2:cd:82:4e:f9:c4:76:83:9f:91:d1:
    ed:f3:3b:f7:8c:79:3c:c8:b6:a3:d5:44:f5:e2:86:d4:18:6c:
    60:82:b6:a7:6a:2b:67:37:7e:4c:20:3f:31:96:ef:9f:c1:0d:
    9f:95:e8:11:2c:8a:95:d9:c5:ce:6f:e1:03:66:12:8e:e6:96:
    af:3f
    -----BEGIN CERTIFICATE-----
    MIIC6DCCAlGgAwIBAgIJAPlEqbF+K2ZzMA0GCSqGSIb3DQEBCwUAMIGMMQswCQYD
    VQQGEwJDTjESMBAGA1UECAwJR3VhbmdEb25nMREwDwYDVQQHDAhTaGVuWmhlbjEO
    MAwGA1UECgwFRUJBTksxDTALBgNVBAsMBFRlY2gxFzAVBgNVBAMMDmRlbGwuZWJh
    bmsuY29tMR4wHAYJKoZIhvcNAQkBFg9hZG1pbkBlYmFuay5jb20wHhcNMTcwNDE3
    MTE1MzQ3WhcNMTgwNDE3MTE1MzQ3WjCBjDELMAkGA1UEBhMCQ04xEjAQBgNVBAgM
    CUd1YW5nRG9uZzERMA8GA1UEBwwIU2hlblpoZW4xDjAMBgNVBAoMBUVCQU5LMQ0w
    CwYDVQQLDARUZWNoMRcwFQYDVQQDDA5kZWxsLmViYW5rLmNvbTEeMBwGCSqGSIb3
    DQEJARYPYWRtaW5AZWJhbmsuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
    gQCnixBr1luuKVGDc8Hwqrg1lkAHuyYwqBtpn1DkK7DjRQLM+JPpkgPSKndZVswc
    GbGkcC4J9tZBUlIypmFG1YXi157OM28nhD3yb9A87DUdFNRfOnebM9BGgWD2gz2T
    hVTdeCNQdQs9GNkI3SkreqhMtjt3IBoX6yDQAKBmKsugbwIDAQABo1AwTjAdBgNV
    HQ4EFgQU+v//RDaJh11D3hlrqVrTuGglCvcwHwYDVR0jBBgwFoAU+v//RDaJh11D
    3hlrqVrTuGglCvcwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQAg+oY2
    KQVm5LM7deVZDXccbZAfWcw/kOb3llEMbi7F/eBeZaroGMzisvGBr+KFxo9J0dqY
    rmPbRRkO4LRi8s2CTvnEdoOfkdHt8zv3jHk8yLaj1UT14obUGGxggranaitnN35M
    ID8xlu+fwQ2flegRLIqV2cXOb+EDZhKO5pavPw==
    -----END CERTIFICATE-----


    /etc/pki/tls/openssl.cnf
    配置文件



    (umask 077;openssl genrsa -out private/cakey.pem 2048)

    [root@localhost CA]# openssl req -new -x509 -key private/cakey.pem -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) []:GD
    Locality Name (eg, city) [Default City]:SZ
    Organization Name (eg, company) [Default Company Ltd]:Ebank
    Organizational Unit Name (eg, section) []:Tech
    Common Name (eg, your name or your server's hostname) []:dell.ebank.com
    Email Address []:admin@ebank.com

    CA目录下有这些文件
    total 8
    -rw-r--r--. 1 root root 1383 Apr 17 20:04 cacert.pem
    drwxr-xr-x. 2 root root 6 Feb 20 22:41 certs
    drwxr-xr-x. 2 root root 6 Feb 20 22:41 crl
    -rw-r--r--. 1 root root 0 Apr 17 20:05 index.txt
    drwxr-xr-x. 2 root root 6 Feb 20 22:41 newcerts
    drwx------. 2 root root 22 Apr 17 20:02 private
    -rw-r--r--. 1 root root 3 Apr 17 20:05 serial
    并且echo 01> serial

    假设有个web服务,为web服务申请证书
    (umask 077;openssl genrsa -out httpd.key 1024)

    生成一个证书请求
    openssl req -new -key httpd.key -out httpd.csr
    不需要-x509,自签证书才需要使用

    把生成的httpd.csr发给CA,然后CA签署
    openssl ca -in httpd.csr -out httpd.crt -days 365



  • 相关阅读:
    常用知识点集合
    LeetCode 66 Plus One
    LeetCode 88 Merge Sorted Array
    LeetCode 27 Remove Element
    LeetCode 26 Remove Duplicates from Sorted Array
    LeetCode 448 Find All Numbers Disappeared in an Array
    LeetCode 219 Contains Duplicate II
    LeetCode 118 Pascal's Triangle
    LeetCode 119 Pascal's Triangle II
    LeetCode 1 Two Sum
  • 原文地址:https://www.cnblogs.com/python-study/p/6086310.html
Copyright © 2011-2022 走看看