阿里云服务器apache配置SSL证书成功开启Https(记录趟过的各种坑)
环境:
阿里云云服务器 windows server 2008 标准版 sp2 中文版(趁1212优惠买的一年的水货配置)
阿里云购买的域名(已备案、已解析)
服务器:phpstudy:php5.4.45+apache(因为是phpstudy集成的,所以没找到apache的版本,我感觉应该是2.4.8之前的版本)
ssl证书 (配置过程中,我申请了2个不同机构的证书,第一个gg了,是在 https://www.trustasia.com/ 申请的1年免费证书。成功的是用的第二个,在 https://www.myssl.cn/products/freessl.html 申请的1个月的试用证书。所以是我技术问题还是???)
步骤:
申请证书(某度很多教程的,大家自行搜索)
上传证书
登陆阿里云控制台=》安全(云盾)=》ca证书服务=》上传原有证书(也可以直接买阿里云的证书,这样就不用上传,不过个人网站一般是申请免费的证书)
开启服务器443端口(https默认端口)
阿里云控制台=》云计算基础服务=》云服务器ecs=》网络和安全=》安全组,没有安全组的创建一个安全组,有的直接选择相应安全组,点击配置规则=》添加安全组规则(把80端口和443端口添加进安全组,授权对象填0.0.0.0/0)
开启apache相应配置
#修改httpd.conf文件
loadmodule ssl_module modules/mod_ssl.so
include conf/extra/httpd-ssl.conf
loadmodule rewrite_module
#去掉上面三行前的"#"
保存退出
在apache目录下的conf目录下新建一个cert目录,将你的证书文件放在这里面
开启php的openssl模块,在phpstudy的“php扩展及设置”里面开启即可
修改httpd-ssl.conf文件,保存退出
在..\apache\conf\extra目录下,打开httpd-ssl.conf文件(注:先备份一遍,以免出错,因为这个文件的错误我重装phpstuy不下10回)
在文件里定位到 listen 443 这句话这里,把 从这句话到这个文件结尾的文本 全部注释掉或者删除掉,替换成以下代码
listen 443 //这里强调一下,如果listen 443这句代码在这个文件里重复出现了,即重复监听,apache会报错,然后不能启动
sslstrictsnivhostcheck off
sslciphersuite aesgcm:all:!dh:!export:!rc4:+high:!medium:!low:!anull:!enull
sslprotocol all -sslv2 -sslv3
<virtualhost *:443>
#这里的路径设置你的网站根目录
documentroot "c:\phpstudy\phptutorial\www"
#这里xxxxx.com替换成你的域名
servername www.xxxxx.com
#这里xxxxx.com替换成你的域名
serveralias xxxxx.com
#这里的路径设置你的网站根目录
<directory "c:\phpstudy\phptutorial\www">
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:\windows\system32\drivers\etc目录下
用记事本打开,在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/)
重启apache
启动浏览器检查是否可以访问localhost 及你的域名,并且域名头部标志为https。如果不能正常访问,请根据以上步骤重新检查。
ssl配置成功,能够使用https访问你的域名了!
下一篇: Python 选择排序中的树形选择排序