阿里云服务器使用免费的 CA 证书部署 HTTPS(Apache)

本文示例服务器环境:

CentOS 7.2  Apache 2.4  PHP 5.6

如果服务器环境不一样,可能会有出入。

1. 阿里云申请免费 CA 证书

如下图购买免费 CA 证书,没什么过多解释了。

购买成功之后会在证书控制台看到补全证书信息的链接,点击去补全即可,如下图:

如果选择了“证书绑定的域名在【阿里云的云解析】产品中…”那个选项,是代表要绑定的域名是在当前申请证书的这个阿里云账户下,如果不在的话,则需要自己去域名管理处添加一条 TXT 的域名解析记录,如下图:

记录类型,主机记录,记录值都在审核进度里显示,填到域名解析里即可。

域名解析填写完成之后,点击上图最下面右侧的“检查配置”,如果左侧显示配置没问题了,就正式提交审核了。

审核完成后对应的证书的状态会变为“已签发”,如下图:

已签发之后,就可以点击右侧的下载按钮下载证书,去服务器配置了。

2. 服务器配置 CA 证书

本文介绍的是使用 Apache 服务器的证书配置,使用 Nginx 的直接使用阿里云上的 Nginx 配置指南就可以,Apache 的配置指南会与阿里云上写的不一样,因为阿里云的指南稍微老旧了一些。

首先下载证书,如下图:

下载证书之后,放到 Apache 安装根目录(/etc/httpd)下,可以直接在服务器上使用wget下载,也可以下载到本地,使用 SCP 上传到阿里云服务器:

scp Downloads/21427xxxx63xxx1.zip root@xx.1xx.xx6.xxx:/etc/httpd

接下来就和阿里云的指南不一样了。

下面这两行你会发现 httpd.conf 里没有,因为 CentOS 已经集成了 openssl,我们要做的是手动安装 mod_ssl 模块。

安装 mod_ssl 模块命令如下:

yum install mod_ssl

安装完成之后,编辑 ssl.conf 文件:

vim /etc/httpd/conf.d/ssl.conf

按下图配置这四个位置:

如果网站的默认目录有改过,记得在这个文件里改一下 443 端口对应的网站默认目录和域名。

然后重启 Apache:

systemctl restart httpd

至此大功告成。

3. HTTP 默认转发到 HTTPS

如果想要 80 端口的 http 访问也转发到 https,打开Apache/conf/httpd.conf,找到 #LoadModule rewrite_module modules/mod_rewrite.so 去掉#号,打开重定向支持,然后找到你网站目录的<Directory>段,修改其中的 AllowOverride None 为 AllowOverride All,然后重启 Apache 。

在你网站目录下放一个.htaccess文件。

编辑器打开.htaccess文件,写入如下规则:

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^/tz.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.phphttps://localhost/tz.php两个地址都可以访问。

完。

赞赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注