Apache http转https

本文详细介绍了如何将公司网站从HTTP转换为HTTPS服务,包括SSL证书的准备、Apache配置文件的修改以及设置HTTP到HTTPS的自动跳转。在配置过程中,解决了403错误问题,并提供了重定向规则的设置方法,确保了网站安全性和用户体验。
摘要由CSDN通过智能技术生成

公司企业网站买了证书后想要把原来的http服务转为https的服务,并实现http到https的自动跳转。

1.准备ssl证书

从公司购买证书后,会得到三个文件,分别是server.crt 文件,server.key文件,cfca.crt文件,其中cfca.crt文件是自己复制证书编码生成的文件。我们公司购买的是中国金融认证中心的SSL证书。

证书准备完毕后,复制三个文件至Apache容器所在的文件配置目录,可以自己新建一个文件夹保存,我放在conf目录下新建的ssl_crt文件夹中,后面配置会用到文件路径。

2.设置httpd_ssl.conf配置文件

用文本编辑器打开 Apache 根目录下的 conf/httpd.conf 文件,去掉下述两行 的注释符号#。

#LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-ssl.conf

用文本编辑器打开 Apache 根目录下的 conf/extra/httpd-ssl.conf 文件,修改以下内容:

<VirtualHost 127.0.0.1:443> 
    DocumentRoot "/var/www/html" ServerName
    SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3 
    SSLCertificateFile server.crt 路径                                         
    SSLCertificateChainFile cfca.crt 路径
    SSLCertificateKeyFile server.key 路径
</VirtualHost>

其中:
启用 SSL 功能:SSLEngine on
禁用 SSLv2、SSLv3 协议:SSLProtocol all -SSLv2 -SSLv3

公钥文件:SSLCertificateFile server.crt 路径

私钥文件:SSLCertificateKeyFile server.key 路径

证书链文件:SSLCertificateChainFile cfca.crt 路径

以上三个文件即在第一步准备的三个文件。

上述设置完成过后,重新启动 Apache。

遇到的问题:1.配置完成后,重启Apache访问遇到403

解决:修改conf/extra/httpd-ssl.conf文件,DocumentRoot 文件根目录配置错误,根目录一定是要写到index文件所在层。其次打开 apache的配置文件httpd.conf,找到这段代码:

代码如下:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

有时候由于配置了php后,这里的“Deny from all”已经拒绝了一切连接。把该行改成“allow from all”。pache 从2.2升级到 Apache2.4.x 后配置文件 httpd.conf 的设置方法有了大变化以前是将 deny from all 全部改成Allow from all实现外网访问现在是将Require all denied以及 Require local 都改为 Require all granted。

3.设置http自动跳转到https

1.打开Apache/conf/httpd.conf,找到 #LoadModule rewrite_module modules/mod_rewrite.so 去掉#号。   

2.打开Apache/conf/httpd.conf,找到你网站目录的<Directory>段,比如我的网站目录是c:/www,找到
 

 <Directory “C:/www”>
    …
 </Directory>

修改其中的 AllowOverride None 为 AllowOverride All。

3.重启apache服务

4.设置重定向规则

  1)在你网站目录即第三部设置的DocmentRoot目录下放一个.htaccess文件

  2)编辑器打开.htaccess文件,写入如下规则:
    RewriteEngine on
    RewriteCond %{SERVER_PORT} !^443$
    RewriteCond %{REQUEST_URI} !^/index.php
    RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]

    解释:
    %{SERVER_PORT} —— 访问端口
    %{REQUEST_URI} —— 比如如果url是 http://localhost/tz.php,则是指 /tz.php
    %{SERVER_NAME} —— 比如如果url是 http://localhost/tz.php,则是指 localhost

    以上规则的意思是,如果访问的url的端口不是443,且访问页面不是tz.php,则应用RewriteRule这条规则。这样便实现了:访问了 http://localhost/index.php 或者 http://localhost/admin/index.php 等页面的时候会自动跳转到 https://localhost/index.php 或者 https://localhost/admin/index.php,但是访问 http://localhost/tz.php 的时候就不会做任何跳转,也就是说 http://localhost/tz.php 和 https://localhost/tz.php 两个地址都可以访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值