• 配置http服务支持https


    首先简单介绍一下SSL会话的过程:

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

      需要注意的是SSL会话是基于IP地址创建的,所以单IP的主机上,仅可以使用一个https虚拟主机,不过实验环境可随意添加IP地址(ip addr add x.x.x.x/xx dev DEVICE)据说Linux下也有一个开源工具可以基于主机名创建多不个不同的https虚拟主机,不过配置起来没有那么容易。

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

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

    集体配置过程如下:

      基本环境:

        CA主机:

          CentOS 6.9/192.168.119.135

        提供http服务的主机:

          CentOS 7.2/192.168.119.132

          httpd-2.4.6(yum方式安装的默认版本)

    期间,两个主机的防火墙都是关闭状态,SELinux也是disabled

      首先创建一个CA,服务器端(提供http的主机)发起证书请求,由CA给其签证,得到证书后服务器即可配置实现https

        在CA(CentOS 6.9/192.168.119.135)主机上创建CA

          ~]# cd /etc/pki/CA/

          CA]# (umask 077;openssl genrsa -out private/key.pem 2048)    #指明所创建的文件为当前目录下的private目录下名为key.pem,密钥长度为2048

          CA]# touch index.txt   #创建一个index.txt的文件

          CA# echo 01 > serial   #指定之后生成证书的编号从01开始

      为自己创建自签证书

          CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 730   #假设CA的有效期为2年,接下来的内容根据实际情况填即可,完毕,可查看当前目录下是否生成cacert.pem文件

          CA]# ll   #可看到已然生成cacert.pem,CA主机的CA创建完成,到提供http(CentOS 7.2/192.168.119.132)服务的主机生发起CA证书签署请求

      切换到服务器(CentOS 7.2/192.168.119.132)上,发起CA证书签署请求

        切换到/etc/httpd/目录,并创建ssl目录,#目录可以随意创建#并再切换到ssl目录下

          ~]# cd /etc/httpd/

          httpd]# install -d ssl

          httpd]# cd ssl

          ssl]# (umask 077;openssl genrsa -out httpd.key 1024)   #生成密钥,指明放在当前目录下,密钥长度为1024

          ssl]# openssl req -new -key httpd.key -out httpd.csr   #生证书签署请求文件,在此处也可使用-days 来指明时间,但证书可以使用时间最终由CA所决定,指不指都作用不大

          需要注意的是,此时所填写的信息需与之前CA服务器上的一致,Server's name 为http服务器的域名,否则浏览器整会提示不一致

        将csr文件发送到CA服务器

          ssl]# scp httpd.csr root@192.168.119.135:/tmp/   #以root身份上传到CA服务器的/tmp目录下

      此时切换到CA(CentOS 6.9/192.168.119.135)服务器上签署证书即可

        CA]# openssl ca -in /tmp/httpd.csr -out certs/www.lushenle.com.crt -days 365   #证书有效期为一年

        查看newcerts目录下是否生成了证书,若01.pem文件存在标明已经生成了证书,此时,将正说传给http服务器即可

        CA]# scp certs/www.lushenle.com.crt root@192.168.119.132:/etc/httpd/ssl    # 

    接下来接配置http服务器支持https服务

      需要确认服务器是否支持ssl模块

        ~]# httpd -M | grep ssl   #若不支持,需安装模块

        ~]# yum install -y mod_ssl

      切换到/etc/httpd/conf.d/目录下,编辑ssl.conf文件,当然在编辑之前建议先备份一分

        ~]# cd /etc/httpd/conf.d/

        conf.d]# cp ssl.conf{,.bak}

        conf.d]# vim ssl.conf

        DocumentRoot "/vhosts/lushenle/htdocs"
        ServerName www.lushenle.com:443

        <VirtualHost _default_:443> 改为:

        <VirtualHost *:443>   或者  <VirtualHost 192.168.119.132:443>

        SSLCertificateFile /etc/pki/tls/certs/localhost.crt 改为:

        SSLCertificateFile /etc/httpd/ssl/www.lushenle.com.crt

        SSLCertificateKeyFile /etc/pki/tls/private/localhost.key 改为:

        SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

      保存退出,开始测试

         

  • 相关阅读:
    Makefile学习
    Tmux使用
    Linux进程管理学习资料
    Linux内存管理学习资料
    Python常用的软件包
    Docker 学习
    Intel处理器技术文档
    Firefly-RK3399笔记
    Linux Kernel API
    ARM 技术文档
  • 原文地址:https://www.cnblogs.com/lushengle/p/7895468.html
Copyright © 2020-2023  润新知