httpd(apache)--知识总结(3)--https

SSL会话的简化过程

(1) 客户端发送可供选择的加密方式,并向服务器请求证书;
(2) 服务器端发送证书以及选定的加密方式给客户端;
(3) 客户端取得证书并进行证书验正:
    如果信任给其发证书的CA:
        (a) 验正证书来源的合法性;用CA的公钥解密证书上数字签名;
        (b) 验正证书的内容的合法性:完整性验正
        (c) 检查证书的有效期限;
        (d) 检查证书是否被吊销;
        (e) 证书中拥有者的名字,与访问的目标主机要一致;
(4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换;
(5) 服务用此密钥加密用户请求的资源,响应给客户端;

注意:SSL会话是基于IP地址创建;所以单IP的主机上,仅可以使用一个https虚拟主机;

回顾几个术语:PKI,CA,CRL,X.509 (v1, v2, v3)

http事务 vs https事务

httpd(apache)--知识总结(3)--https_第1张图片

创建私有CA

创建私有CA:
    openssl的配置文件:/etc/pki/tls/openssl.cnf

    (1) 创建所需要的文件
        # touch index.txt
        # echo 01 > serial
        # 
    (2) CA自签证书
        # (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
        # openssl req -new -x509 -key /etc/pki/CA/private/cakey.epm -days 7300 -out /etc/pki/CA/cacert.pem
            -new: 生成新证书签署请求;
            -x509: 专用于CA生成自签证书;
            -key: 生成请求时用到的私钥文件;
            -days n:证书的有效期限;
            -out /PATH/TO/SOMECERTFILE: 证书的保存路径;

    (3) 发证
        (a) 用到证书的主机生成证书请求;
            # (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
            # openssl req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr
        (b) 把请求文件httpd.csr传输给CA;
        (c) CA签署证书,并将证书发还给请求者;
            # openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365

            查看证书中的信息:
                openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|-subject|-serial

    (4) 吊销证书
        (a) 客户端获取要吊销的证书的serial
            # openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject

        (b) CA
            先根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致;

            吊销证书:
                # openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem

        (c) 生成吊销证书的编号(第一次吊销一个证书)
            # echo 01 > /etc/pki/CA/crlnumber

        (d) 更新证书吊销列表
            # openssl ca -gencrl -out thisca.crl

            查看crl文件:
                # openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text

配置httpd支持https:

    (1) 为服务器申请数字证书;
        测试:通过私建CA发证书
            (a) 创建私有CA
            (b) 在服务器创建证书签署请求
            (c) CA签证
    (2) 配置httpd支持使用ssl,及使用的证书;
            # yum -y install mod_ssl

            配置文件:/etc/httpd/conf.d/ssl.conf
                    DocumentRoot
                    ServerName
                    SSLCertificateFile
                    SSLCertificateKeyFile
    (3) 测试基于https访问相应的主机;
            # openssl s_client [-connect host:port] [-cert filename] [-CApath directory] [-CAfile filename]

你可能感兴趣的:(Linux运维之道,apache,http代理,https)