环境:
系统环境是阿里云的轻量应用服务器,CentOS系统(Linux),httpd版本
本文内容
上篇:从零开始部署网站——阿里云主机CentOS系统
上一篇说只是简单的将网页部署到主机上,本篇我们将给网站安装SSL证书,有了SSL证书我们就可以使用https协议来访问网站了。
为什么需要https呢,这个是比较全面的解答
而我是因为一个理由:Android的网络请求都必须走https协议。
httpd-2.4.6-88.el7.centos.x86_64
rpm -qa|grep http
CentOS服务器下安装配置SSL
apache环境下配置多个ssl证书搭建多个站点
网站重定向-http怎么重定向到https最全解决方案
在阿里云首页直接搜索证书就可以进入购买界面了
别给5600多块吓到了,你先点击 1个域名 ,然后再点击 Symantec 就有个免费SSL证书可以选
免费证书只能绑定一个子域名。
比如说我想给www.a.com和m.a.com两个子域名安装证书的话就需要购买2个证书了
在购买页面的下面可以选择购买数量
一次最多购买10个,一个阿里云账号最多能有20个免费证书
购买完成之后进入控制台,点击申请,然后在右边填好信息就进入审核了(一般5分钟内),审核通过会通过短信告知你的
www.a.com和a.com可以共用一个证书
审核通过后在已签发里点击下载,我们选择Apache(httpd)
下载完后我们就可以开始最难的安装部分了
首先运行指令:yum install mod_ssl
安装SSL模块。
安装完后可以用https协议进入自己的网站看看
出现这个的原因是目前使用的是SSL模块默认的证书
我们先把证书上传至主机,路径随意,我喜欢放在/etc/httpd/cert
。而且最好简化一下文件名( 但 不要把后缀给简化了)
然后我们修改/etc/httpd/conf.d
的ssl.conf
文件
在最下面添加这样的代码 # 为注释
ServerName Basic a #起个能记起来的名字就行
ServerAlias www.a.com a.com #你要配置的域名
DocumentRoot "/var/www/html" #域名对应的绝对路径
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA
SSLCertificateFile /etc/httpd/cert/www.a.com_public.crt #证书公钥配置
SSLCertificateKeyFile /etc/httpd/cert/www.a.com.key #证书私钥配置
SSLCertificateChainFile /etc/httpd/cert/www.a.com_chain.crt #证书链配置
#域名对应的绝对路径
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
如果有多个子域名要安装SSL证书,那就复制上面的代码修改部分即可
ServerName Mobile a #起个能记起来的名字就行
ServerAlias m.a.com #你要配置的域名
DocumentRoot "/var/www/html/m" #域名对应的绝对路径
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA
SSLCertificateFile /etc/httpd/cert/m.a.com_public.crt #证书公钥配置
SSLCertificateKeyFile /etc/httpd/cert/m.a.com.key #证书私钥配置
SSLCertificateChainFile /etc/httpd/cert/m.a.com_chain.crt #证书链配置
#域名对应的绝对路径
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
systemctl restart httpd
如果控制台是这样就说明配置成功了
现在刷新一下你的网站吧
先打开url重定向支持:
打开/etc/httpd/conf
的httpd.conf
文件
搜索AllowOverride None
,将Nome改为ALL
请修改对应HTML根目录下的AllowOverride
然后在根目录添加 .htaccess 文件
打开.htaccess文件(网站根目录下的文件),写入如下规则:
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^/tz.php
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]
总体来说上面规则的意思是:
如果访问的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 两个地址都可以访问
刷新一下网站,是不是自动从http转到https了呢?
如果你直接输入网址(不带http),也是会直接转入https协议的喔!
这个时候就需要按照提示输入(这里是journalctl -xe
)打开错误日志了
可以看到是找不到文件,那就检查路径是否正确 / 路径下是否有文件 / 文件名是否正确 即可
如果是某项文件里的设置导致的启动失败就会指出是哪个文件的哪一行
真是千辛万苦才配置好SSL证书和写出这篇博文的。几天前在phpStudy里配置了一天都不行,只好转战CentOS,而又因为httpd的更新,已经和之前的配置大相径庭了
这篇18年1月的博文有一半是可以用的CentOS服务器下安装配置SSL
而这篇19年1月的官方文档却过时(不适用了)Apache服务器安装SSL证书
编写这篇博文的时候我电脑死机,忘记保存,直接回到一小时前。
但看到Android上的联网图片终于可以加载自己主机的图片了还是很惊喜的
全文完。
就这么简单,同学们学会了吗?自己去试试看吧。
觉得学到了就在右边给我个赞和收藏呗。这是我更新的动力之一