Apache2.4安装SSL证书教程(基于ubuntu 16.04)
2016-12-23 23:05
1131 查看
HTTPS是未来的一个风向标,今天我也把自己网站的云服务器配置了一下HTTPS,毕竟有多用户同时进行交互,安全性还是要保证一下。找了很多资料,也试了蛮久才弄出来,在此做个记录把。我还是比较喜欢折腾的哈哈,看到成功的那一刹那还是蛮兴奋的。
我的云服务器在校园网内,运行Ubuntu 16.04系统,Apache2.4作为网站服务器,要实现的目标是,无论用户是从HTTP还是HTTPS进入,都自动重定向至HTTPS。
我的思路是这样的:1、从证书提供商获取CA证书
2、开启Ubuntu的OpenSSL,并使Apache加载SSL模块
3、配置conf文件,安装CA证书
4、加载Apache的ReWrite模式
5、增加.htaccess文件,同时配置Apache2.conf使其生效
Step1:到证书提供商申请CA证书,我是通过腾讯云,证书提供商为TrustAsia,申请年限为1年,免费的,提交申请之后,大约5分钟后会收到成功邮件,此时,可从腾讯云的控制台下载CA证书。其他证书提供商的操作要根据具体实际情况。
Setp2:我下载下来的CA证书压缩包是这样的
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/161deb6e68a024f2f902877116c5dda1)
包括了三个主流的HTTP服务器,我选用的是Apache,解压,我把它们放在/usr/local/ssl文件夹下
Setp3:加载OpenSSL模块,终端输入openssl,如果见到下图这样,就说明已经安装了。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/3ce1af8052b947de9ed11bcb2ec1b4b7)
Setp4:加载Apache的SSL模块
使用命令sudo a2enmod ssl
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/1c3397f2353257e89cf16c75278fb679)
注:我是已经加载过的,第一次时候,会提示重启Apache
Setp5:安装下载的CA证书
Apache加载SSL模块后,会在/etc/apache2/sites-available下生成default-ssl.conf文件,我们在终端使用sudo权限,通过vi编辑器打开
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/e696b8b592797e7c84d721ab64c51c1b)
我们需要修改的是:
以下所有
www.domain.com替换成自己的域名
/usr/local/apache/conf/更换成自己安放证书的位置
2_www.domain.com_cert.crt等更换成自己证书提供商的crt或者key文件,具体可查提供商文档,这里以腾讯云为例
1、第一个VirtualHost标签www.domain.com:443
2、ServerName www.domain.com
3、SSLCertificateFile /usr/local/apache/conf/2_www.domain.com_cert.crt
4、 SSLCertificateKeyFile /usr/local/apache/conf/3_www.domain.com.key
5、SSLCertificateChainFile /usr/local/apache/conf/1_root_bundle.crt
更改完成后:wq保存退出
Step6:把default-ssl.conf映射至/etc/apache2/sites-enabled文件夹
我按:之前没有设置这个的时候,重新加载配置文件并重启Apache后,浏览器一直报错,提示无法与服务器建立安全连接,而我尝试了其他没有安装证书的域名,是一直在加载中的状态,看来证书是有起作用的。后来抱了抱度娘的大腿,发现要做这个方面的映射,其实这个映射叫做链接,是Linux中文件链接中的一个分支,分为硬链接和软链接。转念一想available是可用的意思,而enabled是已启用,已应用的意思,可用并不代表已启用啊!这个链接是必须的!
使用命令sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl.conf 进行建立软链接操作。执行此操作后,sites-available/default-ssl.conf与sites-enabled/001-ssl.conf就已经建立了软链接关系,只要sites.available/default-ssl.conf做了修改之后sites-enabled/001-ssl.conf也会做相应的修改,显然前者就是实际的配置文件。Linux中的软链接就有点像Windows系统中的快捷方式,通过sites-enabled/001-ssl.conf就能访问sites-available/001-ssl.conf
重新加载Apache配置文件:sudo /etc/init.d/apache2 force-reload
重启Apache服务:sudo /etc/init.d/apache2 restart
Setp7:现在就可以做一个小小的测试了。浏览器输入https://www.domain.com是不是能连通了呢?看来,在加载SSL模块的同时,也自动放行了443端口,如果没有的话,可以手动设置一下
接下来我们来处理无论是HTTP还是HTTPS都强制定向为HTTPS
使用命令:sudo a2enmod rewrite加载Apache的rewrite模块
加载完成后,使用sudo权限,vi打开Apache2.conf,找到如下
![](https://oscdn.geek-share.com/Uploads/Images/Content/201612/9c7716b5c36463c4f6ec7558b9ae40b0)
这里是你网站的根目录(视情况而定),原来是AllowOverride None,也就是不允许重定向,这个时候,.htaccess不会起到任何作用,现在我们改成ALL
Setp8:进入你的网站根目录,使用命令touch .htaccess来创建.htaccess文件,这个文件很奇怪,与Windows不同,在Linux下是看不到的,所以不要以为没有创建哦
使用vi编辑器对其修改
输入如下内容:
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
主要还是正则,这个我也没搞太明白QAQ,不过我们可以把RewriteRule(重定向规则)进行修改,我把它改成了自己的网站,就是https://后面的,怕SERVER_NAME没设置什么的,保险一些。
重新加载Apache配置,重启Apache2,一切搞定!
附注:今天再次部署SSL证书的时候,Chrome浏览器报出了【此网站不能提供安全链接】的问题,折腾了我一整天,度娘靠不住,直接Google了,国外一位网友说可以将/etc/apache2/sites-enabled/001-ssl.conf中的第一行改为
<VirtualHost *:443
即从上面说的域名,变为了*,再次测试,解决!
我的云服务器在校园网内,运行Ubuntu 16.04系统,Apache2.4作为网站服务器,要实现的目标是,无论用户是从HTTP还是HTTPS进入,都自动重定向至HTTPS。
我的思路是这样的:1、从证书提供商获取CA证书
2、开启Ubuntu的OpenSSL,并使Apache加载SSL模块
3、配置conf文件,安装CA证书
4、加载Apache的ReWrite模式
5、增加.htaccess文件,同时配置Apache2.conf使其生效
Step1:到证书提供商申请CA证书,我是通过腾讯云,证书提供商为TrustAsia,申请年限为1年,免费的,提交申请之后,大约5分钟后会收到成功邮件,此时,可从腾讯云的控制台下载CA证书。其他证书提供商的操作要根据具体实际情况。
Setp2:我下载下来的CA证书压缩包是这样的
包括了三个主流的HTTP服务器,我选用的是Apache,解压,我把它们放在/usr/local/ssl文件夹下
Setp3:加载OpenSSL模块,终端输入openssl,如果见到下图这样,就说明已经安装了。
Setp4:加载Apache的SSL模块
使用命令sudo a2enmod ssl
注:我是已经加载过的,第一次时候,会提示重启Apache
Setp5:安装下载的CA证书
Apache加载SSL模块后,会在/etc/apache2/sites-available下生成default-ssl.conf文件,我们在终端使用sudo权限,通过vi编辑器打开
我们需要修改的是:
以下所有
www.domain.com替换成自己的域名
/usr/local/apache/conf/更换成自己安放证书的位置
2_www.domain.com_cert.crt等更换成自己证书提供商的crt或者key文件,具体可查提供商文档,这里以腾讯云为例
1、第一个VirtualHost标签www.domain.com:443
2、ServerName www.domain.com
3、SSLCertificateFile /usr/local/apache/conf/2_www.domain.com_cert.crt
4、 SSLCertificateKeyFile /usr/local/apache/conf/3_www.domain.com.key
5、SSLCertificateChainFile /usr/local/apache/conf/1_root_bundle.crt
更改完成后:wq保存退出
Step6:把default-ssl.conf映射至/etc/apache2/sites-enabled文件夹
我按:之前没有设置这个的时候,重新加载配置文件并重启Apache后,浏览器一直报错,提示无法与服务器建立安全连接,而我尝试了其他没有安装证书的域名,是一直在加载中的状态,看来证书是有起作用的。后来抱了抱度娘的大腿,发现要做这个方面的映射,其实这个映射叫做链接,是Linux中文件链接中的一个分支,分为硬链接和软链接。转念一想available是可用的意思,而enabled是已启用,已应用的意思,可用并不代表已启用啊!这个链接是必须的!
使用命令sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl.conf 进行建立软链接操作。执行此操作后,sites-available/default-ssl.conf与sites-enabled/001-ssl.conf就已经建立了软链接关系,只要sites.available/default-ssl.conf做了修改之后sites-enabled/001-ssl.conf也会做相应的修改,显然前者就是实际的配置文件。Linux中的软链接就有点像Windows系统中的快捷方式,通过sites-enabled/001-ssl.conf就能访问sites-available/001-ssl.conf
重新加载Apache配置文件:sudo /etc/init.d/apache2 force-reload
重启Apache服务:sudo /etc/init.d/apache2 restart
Setp7:现在就可以做一个小小的测试了。浏览器输入https://www.domain.com是不是能连通了呢?看来,在加载SSL模块的同时,也自动放行了443端口,如果没有的话,可以手动设置一下
接下来我们来处理无论是HTTP还是HTTPS都强制定向为HTTPS
使用命令:sudo a2enmod rewrite加载Apache的rewrite模块
加载完成后,使用sudo权限,vi打开Apache2.conf,找到如下
这里是你网站的根目录(视情况而定),原来是AllowOverride None,也就是不允许重定向,这个时候,.htaccess不会起到任何作用,现在我们改成ALL
Setp8:进入你的网站根目录,使用命令touch .htaccess来创建.htaccess文件,这个文件很奇怪,与Windows不同,在Linux下是看不到的,所以不要以为没有创建哦
使用vi编辑器对其修改
输入如下内容:
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
主要还是正则,这个我也没搞太明白QAQ,不过我们可以把RewriteRule(重定向规则)进行修改,我把它改成了自己的网站,就是https://后面的,怕SERVER_NAME没设置什么的,保险一些。
重新加载Apache配置,重启Apache2,一切搞定!
附注:今天再次部署SSL证书的时候,Chrome浏览器报出了【此网站不能提供安全链接】的问题,折腾了我一整天,度娘靠不住,直接Google了,国外一位网友说可以将/etc/apache2/sites-enabled/001-ssl.conf中的第一行改为
<VirtualHost *:443
即从上面说的域名,变为了*,再次测试,解决!
相关文章推荐
- 基于ubuntu16.04安装docker的教程
- ubuntu16.04 linux 编译安装apache2.4.33的教程详解
- 超详细 Ubuntu / Ubuntu Kylin 16.04 + OpenCV 2.4 + CUDA 8.0 + cuDNN 5.0 + Caffe_SSD 安装教程
- Ubuntu 16.04源码编译安装Apache 2.4.25教程
- UEFI模式下安装Windows 10、Ubuntu 16.04 LTS双系统教程
- 基于Xen的VPS ubuntu+nginx+php安装教程
- 在Tiny210v2 arm开发板上安装apache php mysql基于ubuntu
- 基于Windows下Apache PHP5.3.1安装教程
- ubuntu12 安装 apache2.4+php5.6+mysql5.6
- apache服务器安装以及使用passenger插件部署rails应用,基于ubuntu 12.04 LTS
- apache2.4 + PHP7 win7下的安装教程
- 自己学Docker:1.Docker安装--基于Ubuntu16.04
- 关于win7 64位系统安装apache的 教程 httpd2.4服务无法启动 443端口被占用问题
- UBUNTU10.10安装LAMP(Linux、Apache、Mysql、Php)环境图文教程
- ROS_Kinetic_01 在 Ubuntu 16.04 安装ROS Kinetic 全教程附资料和镜像 2018.02.02更新
- ubuntu14.0(linux) 安装 apache2.4+ 报 apr not found
- UEFI模式下安装Windows 10、Ubuntu 16.04 LTS双系统教程
- Ubuntu13.10源码安装Apache2.4
- ubuntu14.04安装apache2.4,启动ssl
- ubuntu14.0.1LTS安装LAMP(PHP7.0+Mysql5.7+Apache2.4)