HTTP和HTTPS的基本概念
HTTP:是互联网上应用最为普遍的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可使浏览器更加高效,使网络传输减小。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,所以加密的详细内容就须要SSL。
HTTPS协议的主要做用能够分为两种:一种是创建一个信息安全通道,来保证数据传输的安全;另外一种就是确认网站的真实性
http协议的缺点php
HTTPS的优势html
前往freessl免费申请证书thinkphp
1.输入域名点击建立apache
2.输入平时本身用的邮箱,CSR选择浏览器生成,而后点击建立浏览器
3.会生成一个DNS配置,而后咱们前往对应的所购买的域名服务商去添加一条解析规则安全
4.我是在阿里云购买的域名因此前往阿里云控制台找到本身购买的域名而后填写上面的对应规则服务器
5.当配置完成后,回到刚才下发的ssl证书的网站中,点击验证按钮,若是配置解析成功会出现如下界面,不然失败,请仔细从新填写,或者等5到10分钟,等待解析规则生效网络
6.复制里面的内容保存成相应文件架构
打开httpd-ssl.conf文件,添加一条记录,通常在xmapp\apache\conf\extra
下面app
<VirtualHost *:443> DocumentRoot "你网站的路径" #如 C:\php\wwww\itnavs\blogs\blogs-itnavs ServerName www.blogs.itnavs.com ServerAlias blogs.itnavs.com ServerAdmin 470193837@qq.com ServerName itnavs.com SSLEngine on SSLCertificateFile "刚才生成的ssl路径.crt" #如 https/itnavs/blogs/blogs_itnavs.crt SSLCertificateKeyFile "刚才生成的ssl路径.key" #如 https/itnavs/blogs/blogs_itnavs.key SSLCertificateChainFile "刚才生成的ssl路径.crt" #如 https/itnavs/blogs/blogs_itnavschain.crt <Directory "你网站的路径"> #如 C:\php\wwww\itnavs\blogs\blogs-itnavs Options FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
重启Apache,输入https://blogs.itnavs.com/ 浏览器如若出现绿色锁说明配置成功
域名配置https已完成
ServerAdmin指令:
语法: ServerAdmin email-address|URL
用来设置服务器返回给客户端的错误信息中包含的管理员邮件地址。便于用户在收到错误信息后能及时与管理员取得联系。
ServerName指令:
语法:ServerName [scheme://] FQDN [:port]
用来设置服务器用于辨识本身的主机名和端口号。主要用于建立重定向URL。
DocumentRoot指令:
语法:DocumentRoot directory-path
用来设置httpd提供服务的目录。即你所在项目入口处的文件夹。
ErrorLog指令:
语法: ErrorLog file-path
来设置当服务器遇到错误时记录错误日志的文件。若是file-path不是以/开头的绝对路径,那么将会被认为是一个相对于ServerRoot的相对路径。
CustomLog指令:
语法: ErrorLog file-path common
设置日志文件,并指明日志文件所用的格式(一般经过格式的名字)。
<Directory 目录路径>...</Directory>
为主目录或虚拟目录设置权限
DirectoryIndex index.html index.htm index.php
设置访问目录后进入的默认文件
AllowOverride all
定义位于每一个目录下.htaccess(访问控制)文件中的指令类型。none为禁止使用.htaccess文件
特性:Indexes
MultiViews
All
ExecCGI
FollowSymLinks
Includes
IncludesNoExec
命令 | 说明 |
---|---|
Indexes | 容许目录浏览,当客户仅指定要访问的目录,但没有指定要访问目录下的哪一个文件,并且目录下不存在默认文档时,Apache以超文本形式返回目录中的文件和子目录列表(虚拟目录不会出如今目录列表中) |
MultiViews | 容许内容协商的多重视图,MultiViews实际上是Apache的一个智能特性。当客户访问目录 中一个不存在的对象时,如访问“http://192.168.66.6/data/a”,则Apache会查找这个目录下全部a.*文件。因为 data目录下存在a.gif文件,所以Apache会将a.gif文件返回给客户,而不是返回出错信息 |
All | All包含了除MultiViews以外的全部特性,若是没有Options语句,默认为All |
ExecCGI | 容许在该目录下执行CGI脚本 |
FollowSymLinks | 能够在该目录中使用符号链接 |
Includes | 容许服务器端包含功能 |
IncludesNoExec | 容许服务器端包含功能,但禁用执行CGI脚本 |
一旦定义容许目录浏览 ,就会将Web站点的文件夹和文件名结构暴露给黑客。目录浏览还会容许黑客浏览文件并掌握服务器配置信息,因此指定该权限每每带来安全性上的隐患。除非有充足的理由要使用目录浏览,不然应该禁用它
RewriteCond语法参数: # 位于行首时表示注释。 -d 测试字符串是不是已存在的目录 -f 测试字符串是不是已存在的文件 -s 测试字符串所指文件是否有"非零"值(非空的常规文件) -l视为一个路径名并测试它是否为一个存在的符号链接(符号链接) -x(可执行)视为一个路径名并测试它是否为一个存在的、具备可执行权限的文件。该权限由操做系统检测 RewriteRule语法参数: [F] Forbidden(禁止) : 命令服务器返回 403 Forbidden错误给用户浏览器 [L] Last rule(最后一条规则) : 告诉服务器在本条规则执行完后中止重写URL [N] Next(下一条规则) : 告诉服务器继续重写,指导全部重写指令都执行过 [G] Gone(丢失) : 命令服务器返回410 GONE(no longer exists)错误消息 [P] Proxy(代理) : 告诉服务器经过mod_proxy模块处理用户请求 [C] Chain(捆绑) : 告诉服务器将当前的规则和前面的规则进行捆绑 [R] Redirect(重定向) : 命令服务器发出重定向消息,以便用户浏览器发出rewritten/modified(重写/修改)URL的请求 [NC] No Case(不区分大小写) : 对客户端请求的URL不区分大小写 [PT] Pass Through(放行) : 让mod_rewrite模块将重写的URL传回给Apache作进一步处理 [OR] Or(逻辑或) : 用逻辑"或"将两个表达式链接在一块儿,若是结果为"真",则会应用后继的相关规则 [NE] No Escape(禁用转义) : 命令服务器在输出时禁用转义字符 [NS] No Subrequest(禁用子请求) : 若是存在内部子请求,则跳过当前命令 [QSA] Append Query String(追加查询字符串) : 命令服务器在URL末尾追加查询字符串 [S=x] Skip(跳过) : 若是知足某指定的条件,则跳事后面第x调规则 [E=variable:value] Environmental Variable(环境变量) : 命令服务器将值value赋给变量variable [T=MIME-type] Mime Type(MIME类型) : 声明目标资源所属的MIME类型 例如thinkphp隐藏index.php <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>