apache配置https,并且强制使用HTTPS

长话短说。

1、搭建一个本地PHP开发环境,我用的是UPUPW集成包,大家可以自行下载

2、HTTPS要有证书才行,这里用自己生成证书的方法在本地测试使用,不要去申请免费的,这里不是上公网

3、生成所需要的证书文件

4、开始配置

5、完成

本地环境就不多说了,直接从第二个开始吧

执行的位置可以在任何一个位置,这个只要记得就行。openssl记得设置环境变量

执行命令:set OPENSSL_CONF=..\conf\openssl.cnf (确定你已经安装了openssl windows版)
执行命令:openssl genrsa -out server.key 1024 生成服务器端KEY文件
执行命令:openssl req -new -out server.csr -key server.key 生成签署申请。这一步会需要填写一些信息,按照上面提示填写即可,需要注意的是:common name这一选项要写域名地址,要与你的网站域名一样
执行命令:openssl genrsa -out ca.key 1024 生成CA的KEY文件
执行命令:openssl req -new -x509 -days 365 -key ca.key -out ca.crt 生成CA自签署证书
执行命令:openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key 生成CA的服务器签署证书

运行到此时会有报错,不过这不是重要的问题,只要按照提示把该有的文件夹手动建立就行。

到这里,所有要的文件都会生成在你 运行openssl命令所在的目录下面,将以下文件拷贝到apache/conf下,并且新建一个文件夹来保存它们。

apache配置https,并且强制使用HTTPS_第1张图片

apache配置https,并且强制使用HTTPS_第2张图片

这是需要的文件。

接着进行配置。

1、httpd.conf文件

找到如下图片的模块,全部开启

apache配置https,并且强制使用HTTPS_第3张图片

包括 Include conf/extra/httpd-ssl.conf 去掉前面的#

2、Apache2\conf\extra

到这个目录下面找到httpd -ssl.conf

apache配置https,并且强制使用HTTPS_第4张图片

说明下上图。第一个箭头意思是你的项目目录在哪里,注意反斜线

第二个servername,这个一定要注意,在你生成证书的时候上面提到注意的common name,要保持一致,本地的就是localhost

红色矩形的三个参数分别是生成的文件目录所在地方,这个根据你自己的目录填

最后一个箭头是你的项目目录

最后

全部保存,重启apache,访问https://localhost 即可看到效果。 

强制HTTPS访问网站

在htdocs目录下面找到.htaccess文件,将下面的代码复制进去

RewriteCond %{HTTP_HOST} ^localhost [NC]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

保存重启apache,访问localhost,会自动跳转到https://localhost

你可能感兴趣的:(PHP开发干货)