阿里云服务器apache配置SSL证书成功开启Https(记录趟过的各种坑

2019-10-16 14:50:06刘景俊

    #这里的路径设置你的网站根目录    
    <Directory "C:phpStudyPHPTutorialWWW">      
        Options FollowSymLinks ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
        Require all granted
    </Directory>
    SSLEngine on
    #你的公钥文件
    SSLCertificateFile "C:/phpStudy/PHPTutorial/Apache/conf/cert/server.crt"             
   #你的私钥文件(有的机构命名为private或者以你的域名为文件名命名)
    SSLCertificateKeyFile "C:/phpStudy/PHPTutorial/Apache/conf/cert/server.key"     
    #证书链文件(有的机构命名为CA) 我尝试过注释掉这个选项,结果apache不能运行
    SSLCertificateChainFile "C:/phpStudy/PHPTutorial/Apache/conf/cert/chain.crt"        
</VirtualHost>

重启apache,看看能不能正常启动,如果有异常,尝试把第4步中httpd-ssl.conf代码恢复注释(把#重新加上去,保存退出),再次重启apache,如果此时能够正常启动,则说明httpd-ssl.conf文件中有错误(是不是重复监听了?证书路径对不对?证书是否有效?),请认真检查,直到能够正常启动apache

打开hosts文件
我的hosts文件在C:WindowsSystem32driversetc目录下
用记事本打开,在127.0.0.1       localhost下面添加一句话:
127.0.0.1       www..xxxxx.com     //这里替换成你的域名
保存退出

修改.htaccess文件,使域名重定向到https(这样访问域名的时候就不用手动写https://,它会自动添加的)
在你的网站的根目录(我的是WWW目录)下添加或者修改.htaccess文件,代码如下

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]
Options +FollowSymLinks
order allow,deny
allow from all
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
</IfModule>

保存退出

检查服务器是否已经关闭了windows自带的IIS服务器(因为可能会占用apache的80端口),检查是否关闭了系统防火墙,检查是否有其他程序占用了80或者443端口。确认都已经关闭后进行下一步     (这里给大家贴一个端口扫描工具用于检查:http://tool.chinaz.com/port/)