但行好事
莫论前程❤

Apache2.4安装SSL证书教程(基于Ubuntu 16.04)

SSL 全称 Secure Socket Layer 安全套接字层

HTTPS是未来的一个风向标,今天我也把自己网站的云服务器配置了一下HTTPS,毕竟有多用户同时进行交互,安全性还是要保证一下。

我的云服务器在校园网内,运行Ubuntu 16.04系统,Apache2.4作为网站服务器,要实现的目标是,无论用户是从HTTP还是HTTPS进入,都自动重定向至HTTPS。

中间出现了一个配置问题: 无法访问,原因是申请ssl证书的时候是使用域名申请的.但是配置的时候是使用ip配置的.

导致指定证书仅对指定域名有效.对ip无效

推荐更优方案:
https://oneinstack.com/
https://letsencrypt.org

Step1:到证书提供商申请CA证书,我是通过腾讯云,证书提供商为TrustAsia,申请年限为1年,免费的,提交申请之后,大约5分钟后会收到成功邮件,此时,可从腾讯云的控制台下载CA证书。其他证书提供商的操作要根据具体实际情况。

传统Http协议中数据以明文进行传递,用户隐私存在被窃听、篡改、冒充的风险,而Https在Http的基础上加入SSL (Secure Socket Layer)协议,SSL验证服务器身份,并为浏览器和服务器之间的通信加密,使数据传输安全性得到质的提升。实现Https首先需要向国际公认的证书证书认证机构(简称CA,Certificate Authority)申请SSL证书。但也正是由于其申请流程过于复杂,并且价格昂贵,在很长一段时间内并没有被普及。
近日,腾讯云与GeoTrust合作推出免费DV SSL(域名型) CA – G3证书,并且在一定程度上简化了申请流程,只需填入需要申请证书的域名、验证域名所有权,两步即可完成申请,笔者对此抱着怀疑的态度试着申请了一下,最后成功申请并且安装至服务器,中间也遇到一些棘手的问题,具体是什么问题?在这里卖个关子,先附上笔者申请的过程截图:

申请地址:https://console.qcloud.com/ssl

申请证书:

img

手动DNS验证(域名验证)

通过解析指定的DNS记录验证您的域名所有权,指定如主机记录 –> TXT记录类型 –> 记录值的解析格式。

例如为申请证书的域名 www.domain.com 添加一条记录类型为TXT的DNS记录,www.domain.com –> TXT –> 201704262209564gw0...hj37i4xai8m7uii2a23l

img

以腾讯云云解析平台为例说明如何进行操作:

添加域名

点击【添加域名】,输入您要解析域名的主域名domain.com,并点【确定】

img

添加解析记录

点击刚添加的域名【解析】

img

点击【添加记录】

img

1.3 完成指定的TXT记录添加

TXT记录是对域名进行标识和说明的一种方式:

  • 记录类型选择为TXT
  • 主机记录根据证书详情填入,如:_dnsauth
  • 线路类型选择默认
  • 记录值为系统提供的文本内容,此处为201712270743...t5bfctnq,注意记录值须完整填写
  • TTL选择默认值10分钟即可
    img
    img

解析添加成功后如下:
img

www.domain.com TXT记录值的系统会定时检查,若能检测到并且与指定的值匹配,即可完成域名所有权验证。

申请通过:

img

Step1:到证书提供商申请CA证书,我是通过腾讯云,证书提供商为TrustAsia,申请年限为1年,免费的,提交申请之后,大约5分钟后会收到成功邮件,此时,可从腾讯云的控制台下载CA证书。其他证书提供商的操作要根据具体实际情况。
Setp2:我下载下来的CA证书压缩包是这样的

img

包括了三个主流的HTTP服务器,我选用的是Apache下的证书文件apache.crt 和私匙apache.key

/etc/apache2/ 下新建一个ssl 文件夹,把这两个文件扔进去。

Setp3:加载OpenSSL模块,终端输入openssl,如果见到下图这样,就说明已经安装了。

如果未安装则执行:

sudo apt-get install openssl   
--安装OpenSSL

img

Setp4:加载Apache的SSL模块

​ 使用命令

sudo a2enmod ssl
service apache2 restart

img

注:我是已经加载过的,第一次时候,会提示重启Apache

Setp5:安装下载的CA证书

Apache加载SSL模块后,会在/etc/apache2/sites-available下生成default-ssl.conf文件,我们在终端使用sudo权限,通过vi编辑器打开

img

我们需要修改的是:

在ServerAdmin下另起一行加上
 <VirtualHost *:443>
    ServerName ;
找到SSLEngine,SSLCertificateFile,SSLCertificateKeyFile并修改成以下内容

    SSLEngine on

    SSLCertificateFile /etc/apache2/SSL/2_www.liupeng.mobi.crt

    SSLCertificateKeyFile /etc/apache2/SSL/3_www.liupeng.mobi.key

    SSLCertificateChainFile /etc/SSL/Apache/1_root_bundle.crt   

SSL证书配置完毕,保存退出。

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也会做相应的修改,显然前者就是实际的配置文件.

配置 HTTPS 强制跳转

将其配置在.htaccess文件中,然后设置AllowOverride = ALL

RewriteEngine on
RewriteCond  %{HTTPS} !=on
RewriteRule  ^(.*) https://%{SERVER_NAME}$1 [L,R]

强制跳转https配置完毕,保存退出。

使配置生效

重新加载Apache配置文件:

sudo /etc/init.d/apache2 force-reload

重启Apache服务:

sudo /etc/init.d/apache2 restart
现在就可以做一个小小的测试了。浏览器输入https://www.liupeng.mobi是不是能连通了呢?看来,在加载SSL模块的同时,也自动放行了443端口,如果没有的话,可以手动设置一下
开放443端口的解决步骤如下: 
去腾讯云控制台--> 安全组-->新建-->开放443端口

接下来我们来处理无论是HTTP还是HTTPS都强制定向为HTTPS

使用命令:

sudo a2enmod rewrite                    #####加载Apache的rewrite模块

加载完成后,使用sudo权限,vi打开Apache2.conf,找到如下

img

这里是你网站的根目录(视情况而定),原来是AllowOverride None,也就是不允许重定向,这个时候,.htaccess不会起到任何作用,现在我们改成ALL

重新加载Apache配置,重启Apache2,一切搞定!

service apache2 restart
错误处理
  1. 附注:Chrome浏览器报出了【此网站不能提供安全链接】的问题

    国外一位网友说可以将/etc/apache2/sites-enabled/001-ssl.conf中的第一行改为

<VirtualHost *:443

即从上面说的域名,变为了*,再次测试,解决!

  1. https 可以访问但是会报红线:
    1. 原因: 原有的静态资源会导致报红错误,但可以访问

    2. 原因: 申请SSL的时候是用域名申请的,但是中途由于备案期间不能使用域名解析,所以用ip配置.会提示红色错误

      解决问题途径:

      ​ Google和火狐浏览器对比分析:

      您的连接并不安全
      
      140.143.5.20 的管理员没有正确配置好此网站。为避免您的信息失窃,Firefox 并未与此网站建立连接。
      
      详细了解…
      
      140.143.5.20 使用了无效的安全证书。 该证书仅对下列域名有效:
      www.liupeng.mobi, liupeng.mobi 
      错误代码: SSL_ERROR_BAD_CERT_DOMAIN
      

赞(1) 打赏
未经允许不得转载:刘鹏博客 » Apache2.4安装SSL证书教程(基于Ubuntu 16.04)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏