Linux之基于HTTPS的静态网站

目录

Linux之基于HTTPS的静态网站

定义

SSL协议

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

mod_ssl模组

安装

配置文件

ssl配置文件的主要参数

案例

[案例1 --- 搭建HTTP+SSL的加密认证的web服务器](#案例1 --- 搭建HTTP+SSL的加密认证的web服务器)

[案例2 --- 组建多个子目录的网站www.joker.com该网站下有2个子目录www.joker.com/file和www.joker.com/ftp,要求file数据使用http读取,ftp数据使用https读取](#案例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提供密码保护的一种组件模块

安装

vbnet 复制代码
[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配置文件的主要参数

vbnet 复制代码
[root@www /]# vim /etc/httpd/conf.d/ssl.conf 
vbnet 复制代码
# 常用参数如下:
5 Listen 443 https   # 监听的端口号

18 SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog # 存储证书的密码信息

23 SSLSessionCache   shmcb:/run/httpd/sslcache(512000)   # ssl的缓存,位置

24 SSLSessionCacheTimeout  300  # 换存的超时时长

40 <VirtualHost _default_:443>  # 重要,定义虚拟主机的信息

48 ErrorLog logs/ssl_error_log  # 错误日志

49 TransferLog logs/ssl_access_log  # 传输日志

50 LogLevel warn  # 日志等级

54 SSLEngine on  # ssl引擎开启

66 SSLHonorCipherOrder on  # 协商算法

85 SSLCertificateFile /etc/pki/tls/certs/localhost.crt  # 证书存储路径

93 SSLCertificateKeyFile /etc/pki/tls/private/localhost.key  # 私钥文件路径

202 </VirtualHost>  # 虚拟主机结束定义

案例

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

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

vbnet 复制代码
[root@www /]# mkdir -p /test/zy
[root@www /]# cd /test/zy/
[root@www zy]# vim index.html
[root@www zy]# cat index.html 
this is zy

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

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

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

vbnet 复制代码
[root@www private]# cd /etc/pki/tls/certs/
[root@www certs]# ls
ca-bundle.crt  ca-bundle.trust.crt  sendmail.pem
[root@www certs]# openssl req -utf8 -new -key /etc/pki/tls/private/zy.key -x509 -days 365 -out zy.crt    
Enter pass phrase for /etc/pki/tls/private/zy.key:     # 输入私钥加密的密码
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]:86      # 国家代码   
State or Province Name (full name) []:shanxi     # 省份
Locality Name (eg, city) [Default City]:xi'an        # 城市
Organization Name (eg, company) [Default Company Ltd]:tiandi      # 公司    
Organizational Unit Name (eg, section) []:Hcip       # 部门
Common Name (eg, your name or your server's hostname) []:192.168.149.130    # 主机名
Email Address []:145246820@qq.com     # 邮件地址

编辑配置文件

vbnet 复制代码
[root@www certs]# cd ~
[root@www ~]# vim /etc/httpd/conf.d/ssl.conf
<virtualhost  192.168.149.130:443>     # https的虚拟主机设置
        SSLEngine on                  # 开启引擎
        SSLCertificateFile /etc/pki/tls/certs/zy.crt    # 证书存储路径
        SSLCertificateKeyFile /etc/pki/tls/private/zy.key  # 私钥文件存储路径
        servername  192.168.149.130     # 域名
        documentroot    /test/zy             # 启动目录
        <directory  /test/zy >               # 启动目录权限设置
                allowoverride  none
                require  all  granted
        </directory>
</virtualhost>

重启服务

vbnet 复制代码
[root@localhost ~]# systemctl restart httpd

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

vbnet 复制代码
[root@localhost ~]# yum install httpd
[root@localhost ~]# yum install mod_ssl -y
#关闭selinux以及防火墙
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld

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

vbnet 复制代码
[root@localhost ~]# mkdir -p /www/file
[root@localhost ~]# mkdir -p /www/ftp
[root@localhost ~]# vim /www/file/index.html
[root@localhost ~]# vim /www/ftp/index.html
[root@localhost ~]# cat /www/file/index.html 
this is joker/file
[root@localhost ~]# cat /www/ftp/index.html 
this is ftp

修改/etc/hosts的映射

vbnet 复制代码
[root@localhost ~]# vim /etc/hosts

建立file网站

vbnet 复制代码
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
<virtualhost 192.168.149.128>
        servername 'file'
        documentroot /www/file
        alias /file /www/file
        <directory /www/file>
                allowoverride none
                require all granted
        </directory>
</virtualhost>

建立https的ftp网站

vbnet 复制代码
[root@localhost ~]# openssl genrsa -aes128 2048 > /etc/pki/tls/private/sxhkt.key
Generating RSA private key, 2048 bit long modulus (2 primes)
............................................................................................................................................+++++
..............................................................................+++++e is 65537 (0x010001)
Enter pass phrase:    #密码123456
Verifying - Enter pass phrase:
vbnet 复制代码
[root@localhost ~]# touch /etc/pki/tls/certs/sxhkt.crt
[root@localhost ~]# openssl req -utf8 -new -key /etc/pki/tls/private/sxhkt.key -x509 -days 365 -out /etc/pki/tls/certs/sxhkt.crt 
Enter pass phrase for /etc/pki/tls/private/sxhkt.key:
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]:86
State or Province Name (full name) []:shanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:joker
Organizational Unit Name (eg, section) []:linux
Common Name (eg, your name or your server's hostname) []:192.168.149.128
Email Address []:joker.com

编辑配置文件

vbnet 复制代码
[root@localhost ~]# vim /etc/httpd/conf.d/ssl.conf
<virtualhost  192.168.149.128:443>
        sslengine  on
        SSLCertificateFile /etc/pki/tls/certs/sxhkt.crt
        SSLCertificateKeyFile /etc/pki/tls/private/sxhkt.key

        servername  'ftp'
        documentroot  /www/ftp
        alias   /ftp  /www/ftp    # 设置别名访问二级目录
        <directory  /www/ftp>
                allowoverride  none
                require  all  granted
        </directory>
</virtualhost>

重启服务,测试

vbnet 复制代码
[root@localhost ~]# systemctl restart httpd
相关推荐
GodK7771 小时前
HTTPS 的加密流程
网络协议·http·https
limengshi1383924 小时前
通信工程学习:什么是TFTP简单文件传输协议
网络·网络协议·学习·信息与通信
麻辣韭菜6 小时前
网络基础 【HTTP】
网络·c++·http
Deryck_德瑞克7 小时前
Java网络通信—TCP
java·网络·tcp/ip
GodK7777 小时前
IP 数据包分包组包
服务器·网络·tcp/ip
梁诚斌8 小时前
VSOMEIP代码阅读整理(1) - 网卡状态监听
运维·服务器·网络
ZachOn1y9 小时前
计算机网络:计算机网络概述 —— 描述计算机网络的参数
网络·tcp/ip·计算机网络·考研必备
我命由我123459 小时前
SSL 协议(HTTPS 协议的关键)
网络·经验分享·笔记·学习·https·ssl·学习方法
两点王爷9 小时前
使用WebClient 快速发起请求(不使用WebClientUtils工具类)
java·网络
wusam10 小时前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习03(网络及IP规划)
运维·服务器·网络·docker·容器