信息安全实践-Lab1 HTTPS

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sage_wang/article/details/78747043

0、序

基于ubuntn 16.04+apach2+php5.6+mysql14.14 环境搭建web站点,以及HTTPS。同时整合实验过程中,遇到的一些问题。
原稿基于:大佬的博客,同时结合郭燕老师的《自建HTTPS.pdf》。

1、安装实验环境

1.1、安装apache2

sudo apt-get install apache2

遇到问题,通过终端安装程序sudo apt-get install xxx时出错:

E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it

出现这个问题可能是有另外一个程序正在运行,导致资源被锁不可用。而导致资源被锁的原因可能是上次运行安装或更新时没有正常完成,进而出现此状况,解决的办法其实很简单:
在终端中敲入以下两句
方法一:
执行一下 sudo dpkg –configure –a(利用底层的dpkg包管理工具修复一些包安装错误。)
方法二:

//sudo rm /var/lib/apt/lists/lock 
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

方法三:
1、ps-aux 查出apt-get进程的PID,
2、用sudo kill PID代码 杀死进程(我都是找出带apt字样的进程格杀勿论)

1.2、安装php5.6

# 注意 ubuntu 16.04默认安装的是php7.0,实验要求改为5.6
# 此外php5.6, 需要首先安装apache2
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php5.6

如果实验过程中发现如下问题,应该是PHP版本不对,没有成功解析myzoo/index.php,也就是没有成功安装php5.6。可以通过php -v检查php版本。
10.png

# 检查php版本
php -v

1.png
遇到问题,安装php5.6失败;
解决方法:换源
由于Ubuntu Server 16.04官方提供PHP为7.0版本,而不提供PHP5相关版本源的安装,那如何安装PHP5呢,安装好Ubuntu 16.04后请根据以下步骤

# 1.添加网易源
​​sudo add-apt-repository 'deb http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse'

# 2.更新源并安装
sudo apt-get update​

# 3.安装PHP5.6.11,执行以下命令
sudo apt-get install php5.6

1.3、安装mysql5.6

# 注意安装过程中会弹出GUI界面,手动输入root密码,两次
sudo apt install mysql-server mysql-client
sudo apt install php5.6-mysql

2、配置实验环境

2.1、配置mysql

首先进入mysql交互式命令行

# 使用root账户
mysql -u root -p
# 输入密码

2.png

# 创建数据库内容
create database myzoo;
use myzoo; 

create table Person(PersonID int primary key auto_increment, Password varchar(100),Salt varchar(100),Username varchar(100),Token varchar(100),Zoobars int default 10, Profile varchar(5000));
# 退出数据库
exit

2.2、配置myzoo

# 1. 复制myzoo到 /var/www/
sudo cp -r myzoo /var/www/
# 2. 配置myzoo中的数据相关的用户名、密码、数据名字等
sudo gedit /var/www/myzoo/includes/database.class.php
# 提高参考, 需要更改成你自己的数据库密码<your_pass>
private $db_host = 'localhost';
private $db_user = 'root';
private $db_pass = "123456";
private $db_dbname = "myzoo";

3.png

2.3、配置apache2

# 创建配置文件
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/myzoo.conf
sudo gedit /etc/apache2/sites-available/myzoo.conf
# 修改DocumentRoot为 /var/www/myzoo
# 首先禁用默认的Apache虚拟主机:
sudo a2dissite 000-default.conf
# 启用这个站点
sudo a2ensite myzoo.conf
# 重启apache服务器
sudo service apache2 restart

到此浏览器中输入localhost应该可以访问myzoo

4.png

扫描二维码关注公众号,回复: 4902042 查看本文章

3、自建HTTPS

3.1、demoCA 中配置参数文件

# 生成SSL证书
# 创建需要的文件
# 下面四句整体复制执行
# 参数p代表parents,表示递归创建目录。
# 递归创建demoCA,同时生成两个子目录 newcerts 和 private
# demoCA 用于存放 CA 根证书,证书数据库,以及后续服务器生成的证书,密钥以及请求 
# newcerts:保存签名证书的 copy 
# private: 包含私钥
mkdir -p ./demoCA/{private,newcerts} && \
touch ./demoCA/index.txt && \
touch ./demoCA/serial && \
echo 01 > ./demoCA/serial

3.2、生成 CA 根证书和密钥

# 生成 CA 根证书和密钥,用于签名
# 该命令需要用户设置密码。不要忘记。
# 以上步骤生成了 CA 自签名根证书,和 RSA 公/私密钥对。证书的格式是 PEM,有效期是3650天。 
# ./demoCA/cacert.pem: CA 根证书
# ./demoCA/private/cakey.pem:CA 私钥
openssl req -x509 -newkey rsa:2048 -keyout ./demoCA/private/cakey.pem -out ./demoCA/cacert.pem -outform PEM -days 3650

5.png

3.3、创建服务器公私钥,并让 CA 签名,生成服务器证书

# 生成CA证书请求
# 注意CommonName必填, 比如www.myzoo.com
# 同样的,需要输入密码短语。
openssl req -days 3650 -newkey rsa:2048 -keyout ./demoCA/private/tempkey.pem -out tempreq.pem

# 需要将临时私钥转换为 unencrypted key
# 同样的,需要输入密码短语
openssl rsa < ./demoCA/private/tempkey.pem > ./demoCA/private/server_key.pem

6.png

# 使用 CA key 对服务器证书签名
openssl ca -in tempreq.pem -out ./demoCA/server_crt.pem

7.png

现在,自签名的服务器证书和密钥对便产生了:
1. server_crt.pem : 服务器证书文件
2. server_key.pem : 服务器密钥文件

3.4、配置apache2

# 配置apache2/ssl
sudo mkdir /etc/apache2/ssl
sudo cp ./demoCA/server_crt.pem /etc/apache2/ssl/server.crt
sudo cp ./demoCA/private/server_key.pem /etc/apache2/ssl/server.key

# 配置myzoo-ssl.conf
sudo cp /etc/apache2/sites-available/default-ssl.conf myzoo-ssl.conf

# 修改如下内容
# 编辑 DocumentRoot 指向你写的网页文件,要填写绝对路径,/var/www/myzoo。
# 将“SSLCertificateFile ”一项改为”sever_crt.pem” 的绝对路径(从根目录开始) 。
# 将”SSLCertificateKeyFile ”一项改为“server_key.pem”的绝对路径。 
# 这样服务器便把之前 CA 签名的“服务器证书文件”和“服务器密钥文件”配置好了。
DocumentRoot /var/www/myzoo
SSLCertificateFile      /etc/apache2/ssl/server.crt
SSLCertificateKeyFile   /etc/apache2/ssl/server.key

8.png

3.5、导入根证书

# 信任证书,请勿使用chrome,证书要求极为严格
## 为了可以通过www.myzoo.com访问本地
## 注意: 下一行的www.myzoo.com需要同 生成CA证书请求 中填写的CommonName相同 
sudo sh -c " echo \"127.0.0.1     www.myzoo.com\" >> /etc/hosts"
# CA 与浏览器开发者联系,将自己根证书绑定浏览器。浏览器中信任cacert.pem, 此文件在demoCA文件夹下。
# 以firefox57为例
# 首选项 -> 隐私与安全(也就是左边的小锁) -> 查看证书 -> 证书机构 -> 导入 -> 文件管理器选择demoCA文件夹下的cacert.pem即可,出现一个弹窗, 有三个勾选框, 第一个必选

## 生成pfx密钥串,此命令目前无需执行
# openssl pkcs12 -export -inkey ./demoCA/private/server_key.pem -in ./demoCA/server_crt.pem -out server.pfx
# 1. 开启SSL模块
sudo a2enmod ssl
# 2. 禁用default-SSL站点
sudo a2dissite default-ssl
# 3. 启用SSL站点
sudo a2ensite myzoo-ssl
# 4. 重启apache服务器
sudo service apache2 restart

9.png

3.6、打开浏览器,验证

浏览器输入https://www.myzoo.com查看结果
注意:
- 上面的www.myzoo.com需要修改成你输入的CommonName。 如果
- 出现安全警告,可以把这些网站加入”例外”。

https

猜你喜欢

转载自blog.csdn.net/sage_wang/article/details/78747043
今日推荐