为虚拟机中的静态网站加密

最近一直在学习Hugo,一个静态网站生成器,用他搭建了公司的业务手册,导出了HTML格式的网站,放在阿里云的虚拟主机上,觉得还是需要有一个访问限制,只让公司内部的人看,所以搜索了很多网页后,总结了一个如何加密静态网页文件的方法,主要用的是apache.htaccess文件,具体方法如下:

判断主机程序

虚拟主机有很多种,作者的方法目前只在阿里云的apache虚拟主机中试验成功,由于没有nginx的虚拟主机,暂未尝试,如果有试过的朋友,欢迎留言告知。 新建一个名为test.php的文件,上传至网站的根目录,一般是htdocswww,或是wwwroot

1
2
3
4
5
<?php
echo "Path: " . getcwd();
echo "<br>";
echo "Software: " . $_SERVER['SERVER_SOFTWARE'];
phpinfo();

访问http://IP地址或绑定的域名/test.php后,返回的结果一般为:

1
2
Path: /data/home/qxu11924/htdocs
Software: Apache

其中Path代表了这个文件的绝对地址Software代表了WEB服务器使用的软件。

.htpasswd设置

为了确保安全,我们不应该使用明文密码,但是虚拟主机又没有ssh权限,这里我们可以利用一个名为 Htpasswd Generator – Create htpasswd 的网站进行生成。 在Username中输入用户的登录名称(如“user”),并在Password中填写希望用户使用的密码(如“user123”) htpasswd-generator-1 点击Create .htpasswd file生成字符串,会得到如下界面: htpasswd-generator-2 新建一个名为.htpasswd的文件,将网页中的字符串 user:$apr1$APyghgLT$DiWsvwYNHrO1CGzrNeg5p/ 复制到文件内,保存。

.htaccess设置

新建一个名为.htaccess的文件,内容如下:

1
2
3
4
5
6
7
AuthUserFile /data/home/qxu11924/htdocs/.htpasswd
AuthType Basic
AuthName "Restricted Area"
Order Deny,Allow
Deny from all
Require valid-user
Satisfy any

上面AuthUserFile的值代表密码文件存储的位置,也就是我们第一个步骤中Path后面的值,然后加上.htpasswd的文件名。

上传文件

将保存好的三个文件通过FTP软件上传至虚拟主机中需要加密的目录中,访问网站后会出现如下窗口: 登陆界面 输入密码后即可正常访问网站。 当然,这只是一种比较简单的加密方式,对于一些比较敏感的数据,还是推荐采用更高级的加密,或者尝试CMS软件来搭建。