Welcome to aparke’s blog! 注明:此篇博客已投稿至合天智汇,版权归他们所属,转载请注明。
前言
好久没有动手写过博客了,之后有时间再把原来在wordpress上搭建网站的文章迁过来(因为自己的md语法还不是很熟练,所以一直没更新)
前几天看见群里有同学说安装了ssl证书了后,网站直接403了,也就是资源请求错误。感觉他可能一个跳转没写好,于是我就自己在Ubuntu上测试一下 其实不管什么版本基本都一样。下面卖弄一下自己实现的方法。
1.先简单介绍一下ssl
网站使用ssl必将是一个趋势。
据外媒报道,自2018年5月1日起,如果Https网站所使用的SSL凭证未出现在公共证书透明度(Certificate Transparency,以下简称CT)日志中,谷歌Chrome浏览器就会出现全屏警告画面。
SSL是网站安全重要的防护。目前,SSL证书的使用范围遍及世界各地网络。SSL对于网站来说是十分重要的安全协议,因为它能保护网站以及用户的个人隐私信息,以及数据的安全性和完整性。详细介绍关于ssl
2.安装apache2
本次实验使用腾讯云的服务器Ubuntu14.04(属于Debian以下方法都可以实现)
使用ip:110.230.107.42
使用的域名:xsscss.cn (提到此域名,我就得说一下我一直付费到2024年啦,都是money啊23333)
使用的证书:由腾讯云提供的免费证书(怎么申请自行百度)
- 1.)安装apache
为了方便 我直接使用root权限操作一切(
ubuntu
一般使用使用执行命令需要sudo
)
# sudo su |
# apt install apache2 -y |
- 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的主配置文件
3.安装openssl
其实一般最新的服务器都会默认自带openssl的,本次实验我们覆盖安装最新的,是没有影响的,如果非要卸载再安装的给你一行代码自己实现
# apt remove openssl |
- 1.)安装openssl以及所需要的依赖包
# apt install openssl -y |
- 2.)加载ssl模块
# a2enmod ssl |
- 3.)根据提示重启apache服务
# service apache2 restart |
- 4.)加载成功后可到配置文件查看是否加载成功
# cd /etc/apache2/mods-enabled |
有以上图中标记的两个文件夹则加载成功
4.上传证书到云服务器
我已将在腾讯云申请的免费的ssl证书下载到本地,当然通过openssl可以自己生成一个,但是有没有颁发授权,会有提示网站证书不安全,如果是自己的设备安装的话这个开源免费openssl的值得一搞。之前曾装过深信服的桌面云服务器里面管理页面系统都是ssl加密但是也都是证书不安全,但也没什么不好。毕竟本地使用。但是自己网站的话每次都出现此网站证书不安全,给浏览你网站的朋友带来一种不安全的印象。所以我们必须使用颁发的证书,可以买,很贵的,还好国内阿里云和腾讯云都有免费的。自己要有域名的话就去免费申请一个,跟着我给网站安装一个ssl。
证书就是这样
这次使用apache的
上传上去
方法很多 什么搭建ftp什么的 或者存到自己一个网站的目录下 wget一下啊
这次我使用xshell里面的一个工具 既可以下载又可以上传 so easy!
- 安装lrzsz工具上传证书
# apt install lrzsz |
使用rz上传sz下载
一般上传或者wget的目录都在家目录,不懂Linux可以看看我之前的linux学习的文章
# cd /home/ubuntu |
将证书文件移动配置文件中去自己新建一个文件夹放证书就行(这样做的意义就是趴在放在一般目录被删掉,而etc配置文件我么一般不会删,除非卸载一些东西才会那样干)
查看并及解压
# mkdir /etc/apache/ssl |
- 看看证书里的文件是什么啊
1_root_bundle.crt是根证书链(公钥)
2_xsscss.cn.crt证书公钥(一般以域名命名)
3_xsscss.cn.key私钥文件(一般以域名命名)
接下里我们要做的就是让ssl模块加载这三个文件
5.配置openssl
Apache加载SSL模块后,会在/etc/apache2/sites-available下生成default-ssl.conf文件
需要配置三个地方
- 1.)进入配置
# cd /etc/apache2/sites-available/ |
- 添加一行
ServerName www.xsscss.cn
- 添加(修改)链接到三个证书文件,注意自己ssl证书所在的路径
SSLCertificateFile /etc/apache2/ssl/2_xsscss.cn.crt |
- 2.)设置一个软链接使其apache加载ssl配置文件
进入到site-enabled文夹中查看当期只有一个000-default.conf文件
通过一些命令做一个映射使其apache加载ssl配置文件
#cd /etc/apache2/sites-enabled/ |
映射(创建软链接)成功后会发现在/etc/apache2/sites-enabled/ 下增加了default-ssl.conf文件,实际是一个软链接
- 3.)加载apache的rewrite模块,并重启apache2服务器
# a2enmod rewrite |
6.设置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文件
# cd /var/www/ |
先百描述一波.htaccess文件(或者”分布式配置文件”),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
这个文件要是有php环境等其他动态网站的话 我们需要自己新建一个把我们需要的URL跳转规则放进去
这个的话有好几种实现方法
- 1.全服务器网站跳转
- 2.一个网站跳转
- 3.某些页面(目录跳转)
这里主要讲下全服务器网站和单个网站跳转
# vi .htaceess |
全服务器跳转:
添加以下代码(使用正则表达式过滤的,在Java和python爬虫中用过,还有js验证过滤用的也多)
RewriteEngine on |
如果对某个目录做强制跳转,则使用以下代码:
RewriteEngine on |
最后重启服务
# service apache2 restart |
7.测试访问
至此 Apache http访问转到https 配置结束
大功告成
需注意到地方(会一直跟新这个地方,把我遇到的坑,都会罗列出来)
前提是你的域名要解析到本ip,我这里已经解析过了
除此之外,云服务器可能有安全规则防火全会关闭443端口,尤其阿里云,第一次给IIS aparke.cn配置的时候就入坑了 后来还是人工提交订单帮我找到问题所在
emmm 三点了 卧槽 边搭建边写了两小时,博客要写完美,真不好写。