• Linux之基于HTTPS的静态网站


    目录

    Linux之基于HTTPS的静态网站

    定义

    SSL协议

    使用Apache+mod_ssl组件的加密认证网站

    mod_ssl模组

    安装

    配置文件

    ssl配置文件的主要参数

    案例

            案例1 --- 搭建HTTP+SSL的加密认证的web服务器

            案例2 ---  组建多个子目录的网站www.joker.com,该网站下有2个子目录www.joker.com/file和www.joker.com/ftp,要求file数据使用http读取,ftp数据使用https读取


    Linux之基于HTTPS的静态网站

    定义

            超文本传输协议HTTP协议备用于在Web浏览器和网站服务器之间传递信息

            HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS

            HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext TransferProtocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道

            HTTPS并不是一个新协议,而是HTTP+SSL(TLS)。原本HTTP先和TCP(假定传输层是TCP协议)直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间

    SSL协议

    定义

            SSL --- 是“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。到了1999年,SSL 应用广泛,已经成为互联网上的事实标准。IETF 就把SSL 标准化。标准化之后SSL被改为 TLS(Transport Layer Security传输层安全协议)

    SSL协议分层

            SSL记录协议 (SSL Record Protocol)它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能

            SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等

    SSL协议提供的服务

    • 认证用户和服务器,确保数据发送到正确的客户机和服务器

    • 加密数据以防止数据中途被窃取

    • 维护数据的完整性,确保数据在传输过程中不被改变

    使用Apache+mod_ssl组件的加密认证网站

    mod_ssl模组

            mod_ssl组件 --- 是apache的一个模块,以openssl的工具箱为基础专门为apache提供密码保护的一种组件模块

    安装

    [root@www conf.d]# yum install mod_ssl -y

    配置文件

    • 主配置文件 --- /etc/httpd/conf.d/ssl.conf

    • 证书文件 --- /etc/pki/tls/certs/xxxx.crt

    • 私钥文件 ---/etc/pki/tls/private/xxxx.key

    ssl配置文件的主要参数

    [root@www /]# vim /etc/httpd/conf.d/ssl.conf 

    1. # 常用参数如下:
    2. 5 Listen 443 https # 监听的端口号
    3. 18 SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog # 存储证书的密码信息
    4. 23 SSLSessionCache shmcb:/run/httpd/sslcache(512000) # ssl的缓存,位置
    5. 24 SSLSessionCacheTimeout 300 # 换存的超时时长
    6. 40 443> # 重要,定义虚拟主机的信息
    7. 48 ErrorLog logs/ssl_error_log # 错误日志
    8. 49 TransferLog logs/ssl_access_log # 传输日志
    9. 50 LogLevel warn # 日志等级
    10. 54 SSLEngine on # ssl引擎开启
    11. 66 SSLHonorCipherOrder on # 协商算法
    12. 85 SSLCertificateFile /etc/pki/tls/certs/localhost.crt # 证书存储路径
    13. 93 SSLCertificateKeyFile /etc/pki/tls/private/localhost.key # 私钥文件路径
    14. 202 # 虚拟主机结束定义

    案例

            案例1 --- 搭建HTTP+SSL的加密认证的web服务器

    创建存储网页的目录,xftp上传网页数据

    1. [root@www /]# mkdir -p /test/zy
    2. [root@www /]# cd /test/zy/
    3. [root@www zy]# vim index.html
    4. [root@www zy]# cat index.html
    5. this is zy

    在/etc/pki/tls/private/目录中生成私钥文件

    1. [root@www zy]# cd /etc/pki/tls/private/
    2. [root@www private]# ls
    3. sendmail.key
    4. [root@www private]# openssl genrsa -aes128 2048 > zy.key
    5. Generating RSA private key, 2048 bit long modulus (2 primes)
    6. .............+++++
    7. ........................+++++
    8. e is 65537 (0x010001)
    9. Enter pass phrase: # 设置对私钥加密的密码,123456
    10. Verifying - Enter pass phrase: # 在输入一遍
    11. [root@www private]#

    在/etc/pki/tls/certs/目录中新建数字证书

    1. [root@www private]# cd /etc/pki/tls/certs/
    2. [root@www certs]# ls
    3. ca-bundle.crt ca-bundle.trust.crt sendmail.pem
    4. [root@www certs]# openssl req -utf8 -new -key /etc/pki/tls/private/zy.key -x509 -days 365 -out zy.crt
    5. Enter pass phrase for /etc/pki/tls/private/zy.key: # 输入私钥加密的密码
    6. You are about to be asked to enter information that will be incorporated
    7. into your certificate request.
    8. What you are about to enter is what is called a Distinguished Name or a DN.
    9. There are quite a few fields but you can leave some blank
    10. For some fields there will be a default value,
    11. If you enter '.', the field will be left blank.
    12. -----
    13. Country Name (2 letter code) [XX]:86 # 国家代码
    14. State or Province Name (full name) []:shanxi # 省份
    15. Locality Name (eg, city) [Default City]:xi'an # 城市
    16. Organization Name (eg, company) [Default Company Ltd]:tiandi # 公司
    17. Organizational Unit Name (eg, section) []:Hcip # 部门
    18. Common Name (eg, your name or your server's hostname) []:192.168.149.130 # 主机名
    19. Email Address []:145246820@qq.com # 邮件地址

    编辑配置文件

    1. [root@www certs]# cd ~
    2. [root@www ~]# vim /etc/httpd/conf.d/ssl.conf
    3. 192.168.149.130:443> # https的虚拟主机设置
    4. SSLEngine on # 开启引擎
    5. SSLCertificateFile /etc/pki/tls/certs/zy.crt # 证书存储路径
    6. SSLCertificateKeyFile /etc/pki/tls/private/zy.key # 私钥文件存储路径
    7. servername 192.168.149.130 # 域名
    8. documentroot /test/zy # 启动目录
    9. # 启动目录权限设置
    10. allowoverride none
    11. require all granted

    重启服务

    1. [root@localhost ~]# systemctl restart httpd
    2. Enter TLS private key passphrase for 192.168.149.128:443 (RSA) : ****** #密码为先前设置的123456

            案例2 ---  组建多个子目录的网站www.joker.com,该网站下有2个子目录www.joker.com/file和www.joker.com/ftp,要求file数据使用http读取,ftp数据使用https读取

    安装mod_ssl已经Apache

    1. [root@localhost ~]# yum install httpd
    2. [root@localhost ~]# yum install mod_ssl -y
    3. #关闭selinux以及防火墙
    4. [root@localhost ~]# setenforce 0
    5. [root@localhost ~]# systemctl stop firewalld

    新建网页目录,并创建文件

    1. [root@localhost ~]# mkdir -p /www/file
    2. [root@localhost ~]# mkdir -p /www/ftp
    3. [root@localhost ~]# vim /www/file/index.html
    4. [root@localhost ~]# vim /www/ftp/index.html
    5. [root@localhost ~]# cat /www/file/index.html
    6. this is joker/file
    7. [root@localhost ~]# cat /www/ftp/index.html
    8. this is ftp

    修改/etc/hosts的映射

    [root@localhost ~]# vim /etc/hosts

    建立file网站

    1. [root@localhost ~]# vim /etc/httpd/conf/httpd.conf
    2. 192.168.149.128>
    3. servername 'file'
    4. documentroot /www/file
    5. alias /file /www/file
    6. allowoverride none
    7. require all granted

    建立https的ftp网站

    1. [root@localhost ~]# openssl genrsa -aes128 2048 > /etc/pki/tls/private/sxhkt.key
    2. Generating RSA private key, 2048 bit long modulus (2 primes)
    3. ............................................................................................................................................+++++
    4. ..............................................................................+++++e is 65537 (0x010001)
    5. Enter pass phrase: #密码123456
    6. Verifying - Enter pass phrase:

    1. [root@localhost ~]# touch /etc/pki/tls/certs/sxhkt.crt
    2. [root@localhost ~]# openssl req -utf8 -new -key /etc/pki/tls/private/sxhkt.key -x509 -days 365 -out /etc/pki/tls/certs/sxhkt.crt
    3. Enter pass phrase for /etc/pki/tls/private/sxhkt.key:
    4. You are about to be asked to enter information that will be incorporated
    5. into your certificate request.
    6. What you are about to enter is what is called a Distinguished Name or a DN.
    7. There are quite a few fields but you can leave some blank
    8. For some fields there will be a default value,
    9. If you enter '.', the field will be left blank.
    10. -----
    11. Country Name (2 letter code) [XX]:86
    12. State or Province Name (full name) []:shanxi
    13. Locality Name (eg, city) [Default City]:xi'an
    14. Organization Name (eg, company) [Default Company Ltd]:joker
    15. Organizational Unit Name (eg, section) []:linux
    16. Common Name (eg, your name or your server's hostname) []:192.168.149.128
    17. Email Address []:joker.com

    编辑配置文件

    1. [root@localhost ~]# vim /etc/httpd/conf.d/ssl.conf
    2. 192.168.149.128:443>
    3. sslengine on
    4. SSLCertificateFile /etc/pki/tls/certs/sxhkt.crt
    5. SSLCertificateKeyFile /etc/pki/tls/private/sxhkt.key
    6. servername 'ftp'
    7. documentroot /www/ftp
    8. alias /ftp /www/ftp # 设置别名访问二级目录
    9. allowoverride none
    10. require all granted

    重启服务,测试

    [root@localhost ~]# systemctl restart httpd

  • 相关阅读:
    Java实现一个Redis可视化工具
    【网站架构】一招搞定90%的分布式事务,实打实介绍数据库事务、分布式事务的工作原理应用场景
    linux下安装qt、qt触摸屏校准tslib
    java毕业生设计医院住院综合服务管理系统计算机源码+系统+mysql+调试部署+lw
    动态规划 Ⅱ
    开始打击了
    HDFS完全分布式搭建及Hadoop HA集群搭建
    浮动优缺点及清除浮动的方法
    论文阅读 Dynamic Network Embedding by Modeling Triadic Closure Process
    day03-拉取在线用户&无异常退出功能
  • 原文地址:https://blog.csdn.net/qq_57289939/article/details/132664961