你的网站还在使用不安全的HTTP协议吗

2018-06-05  本文已影响28人  蚁景科技

前几天看见群里有同学说安装了ssl证书了后,网站直接403了,也就是资源请求错误。我判断可能原因就是url跳转的规则估计有问题,因为第一次我也踩过这个坑,然后我在自己的Ubuntu云服务器里面搭建测试一样。

那么网站为什么要使用ssl?

目前绝大多数网站都还使用的是HTTP协议。而HTTP 协议无法加密数据,极有可能会被不法分子利用。存在导致数据泄露、数据篡改、流量劫持、钓鱼攻击等安全问题隐患。如果网站使用 HTTPS协议的话,可以在 HTTP 的基础上加入 SSL/TLS 协议,依靠 SSL 证书来验证服务器的身份,为客户端和服务器端之间建立“SSL”通道,确保数据运输安全。更多详细的资料可以自行百度。

ssl的简单介绍

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

SSL是网站安全重要的防护。目前,SSL证书的使用范围遍及世界各地网络。SSL对于网站来说是十分重要的安全协议,因为它能保护网站以及用户的个人隐私信息,以及数据的安全性和完整性。详细介绍关于ssl。

网站使用ssl必将是一个趋势。

据外媒报道,自2018年5月1日起,如果Https网站所使用的SSL凭证未出现在公共证书透明度(Certificate Transparency,以下简称CT)日志中,谷歌Chrome浏览器就会出现全屏警告画面。

我安装ssl证书中的具体主要操作步骤

1.安装web服务器apache

2.安装开源的openssl

3.申请域名证书上传到服务器中

4.配置openssl加载证书文件

5.设置HTTP跳转HTTPS

01安装apache2

本次实验使用腾讯云的服务器Ubuntu16.04(属于Debian以下方法都可以实现)

使用ip:111.230.107.42

使用的域名:xsscss.cn (提到此域名,我就得说一下我一直付费到2024年啦,都是money啊23333)

使用的证书:由腾讯云提供的免费证书(怎么申请自行百度)

1.1安装apache

为了方便 我直接使用root权限操作一切(ubuntu 一般使用使用执行命令需要sudo)

1# sudo su

1# apt install apache2 -y

1.2浏览器访问测试

至此安装apache2完成,简单介绍一下apache的目录

安装好了Apache2会自动启动,但是自动启动的不包含https仅仅是http默认的配置路径

Apache配置文件路径: cd /etc/apache2/

Apache默认日志路径: cd /var/log/apache2

进入Apache的配置文件目录

cd /etc/apache2/

查看目录结构

tree

具体的目录结构如下

apache2.conf

conf-available

conf-enabled

envvars

magic

mods-available

ports.conf

sites-available

sites-enabled

其中 apache2.conf 是整个Apache的主配置文件

02 安装openssl

其实一般最新的服务器都会默认自带openssl的,本次实验我们覆盖安装最新的,是没有影响的,如果非要卸载再安装的给你一行代码自己实现

1# apt remove openssl

2.1安装openssl以及所需要的依赖包

1# apt install openssl -y

2# apt install libssl-dev -y

2.2加载ssl模块

1# a2enmod ssl

2.3根据提示重启apache服务

1# service apache2 restart

2.4加载成功后可到配置文件查看是否加载成功

1# cd /etc/apache2/mods-enabled

有以上图中标记的两个文件夹则加载成功

03 上传证书到云服务器

我已将在腾讯云申请的免费的ssl证书下载到本地,当然通过openssl可以自己生成一个,但是有没有颁发授权,会有提示网站证书不安全,如果是自己的设备安装的话这个开源免费openssl的值得一搞。之前曾装过深信服的桌面云服务器里面管理页面系统都是ssl加密但是也都是证书不安全,但也没什么不好。毕竟本地使用。但是自己网站的话每次都出现此网站证书不安全,给浏览你网站的朋友带来一种不安全的印象。所以我们必须使用颁发的证书,可以买,很贵的,还好国内阿里云和腾讯云都有免费的。自己要有域名的话就去免费申请一个,跟着我给网站安装一个ssl。

证书就是这样

这次使用apache的

上传上去

方法很多 什么搭建ftp什么的 或者存到自己一个网站的目录下 wget一下啊

这次我使用xshell里面的一个工具 既可以下载又可以上传 so easy!

安装lrzsz工具上传证书

1# apt install lrzsz

使用rz上传sz下载

一般上传或者wget的目录都在家目录,不懂Linux可以看看我之前的linux学习的文章

1# cd /home/ubuntu

2# rz

3# ls

将证书文件移动配置文件中去自己新建一个文件夹放证书就行(这样做的意义就是趴在放在一般目录被删掉,而etc配置文件我么一般不会删,除非卸载一些东西才会那样干)

查看并及解压

1# mkdir /etc/apache/ssl

2# mv /Apache.zip /etc/apache/ssl

3# unzip Apache.zip

看看证书里的文件是什么啊

1_root_bundle.crt是根证书链(公钥)

2_xsscss.cn.crt证书公钥(一般以域名命名)

3_xsscss.cn.key私钥文件(一般以域名命名)

接下里我们要做的就是让ssl模块加载这三个文件

04 配置openssl

Apache加载SSL模块后,会在/etc/apache2/sites-available下生成default-ssl.conf文件

需要配置三个地方

4.1进入配置

1# cd /etc/apache2/sites-available/

2# ls

3# vi default-ssl.conf

添加一行

ServerName www.xsscss.cn

添加(修改)链接到三个证书文件,注意自己ssl证书所在的路径

1SSLCertificateFile      /etc/apache2/ssl/2_xsscss.cn.crt

2SSLCertificateKeyFile  /etc/apache2/ssl/3_xsscss.cn.key

3SSLCertificateChainFile /etc/apache2/ssl/1_root_bundle.crt

4.2设置一个软链接使其apache加载ssl配置文件

进入到site-enabled文夹中查看当期只有一个000-default.conf文件

通过一些命令做一个映射使其apache加载ssl配置文件

1#cd /etc/apache2/sites-enabled/

2#ls 

3#ln -s /etc/apache2/sites-available/default-ssl.conf ./

映射(创建软链接)成功后会发现在/etc/apache2/sites-enabled/ 下增加了default-ssl.conf文件,实际是一个软链接

4.3加载apache的rewrite模块,并重启apache2服务器

1# a2enmod rewrite

05 设置http跳转https

终于快完了,累死我了,为了写这篇文章,我重装了服务器,做第二次实验了。其实md语法也不难,就是很烦,不知每个地方用啥好,很纠结。

之前在IIS服务器弄个URL映射,很麻烦,下载东西什么的,烦的一匹,对于Linux,我们都知道所有都是修改文件添加几行代码,直接777就是干。233333

进入正题:

—修改两个地方或者一个我这使用两个地方:

url重定向嘛,就是访问”http://xsscss.cn“ 自动跳转到 “https://xsscss.cn"上去了

首先:配置我们最初说的apache.conf核心文件

修改 AllowOverride 参数None 为All 根据字面意思我们就知道了 允许覆盖为all

修改前

修改后

· 然后:在网站根目录下 /var/www使用 touch .htaccess创建.htaccess文件

1# cd /var/www/

2# touch .htaccess

先百描述一波.htaccess文件(或者”分布式配置文件”),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

这个文件要是有php环境等其他动态网站的话 我们需要自己新建一个把我们需要的URL跳转规则放进去

这个的话有好几种实现方法

1.全服务器网站跳转

2.一个网站跳转

3.某些页面(目录跳转)

这里主要讲下全服务器网站和单个网站跳转

1# vi .htaceess

全服务器跳转:

添加以下代码(使用正则表达式过滤的,在Java和python爬虫中用过,还有js验证过滤用的也多)

1RewriteEngine on

2 RewriteCond %{SERVER_PORT} !^443$

3 RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]

如果对某个目录做强制跳转,则使用以下代码:

1RewriteEngine on

2 #RewriteBase /website

3 RewriteCond %{SERVER_PORT} !^443$

4 RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

最后重启服务

1# service apache2 restart

06 测试访问

至此 Apache http访问转到https 配置结束

大功告成

参考以上方法也可以直接在别的环境下安装ssl,大致就是安装开源的open-ssl,,使用自己制作的证书或者使用第三方的证书。

需注意到地方:

前提是你的域名要解析到本ip,我这里已经解析过了

除此之外云服务器可能有安全规则防火全会关闭443端口,尤其阿里云,第一次给IIS aparke.cn配置的时候就入坑了 后来还是人工提交订单帮我找到问题所在

注:本文为合天智汇原创,未经允许,严禁转载!

上一篇下一篇

猜你喜欢

热点阅读