前几天看见群里有同学说安装了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配置的时候就入坑了 后来还是人工提交订单帮我找到问题所在
注:本文为合天智汇原创,未经允许,严禁转载!
网友评论