web安全之自建HTTPS

HTTPS建立流程: 
1. CA建立,并颁发给自己根证书。 
2. CA将含有自己公钥的根证书颁发给浏览器厂商,浏览器厂商将证书绑定浏览器。 
3. 网站服务器产生自己的公私钥,并将含有自己公钥的待签名证书发给CA 。
4. CA核实网站服务器信息,用自己的私钥给网站证书签名。 
5. 网站服务器拿到签名的证书,把它配置到 Apache等自己的服务器上。 

6. 客户端浏览网站时,网站服务器将证书发送给客户端,客户端验证CA的签名。核实无误后建立安全连接。

注:

验证:用私钥加密,用公钥解密。

加密:用公钥加密,用私钥解密。

SSL握手过程: 

1. 由客户端开始,客户端发送 SSL版本,以及加密和压缩算法给服务器。

2.服务器检查是否支持此版本 SSL,并启动客户端期望的加密和压缩算法。 

3. 基础配置完毕后,服务器发送包含自己公钥的证书。

4. 客户端验证服务器证书,并核实服务器的身份是正确的。 

5. 验证完毕后,客户端发送一个加密的验证”消息“给服务器。 

6. 服务器验证是客户端发送的,并且”消息“可以被解密。服务器将解密后的”消息“发送给客 户端。客户端核实后,安全连接。

配置实验环境

安装实验环境

sudo apt-get install apache2

# 注意
# php5, 需要首先安装apache2
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php5.6

sudo apt install mysql-server mysql-client
sudo apt install php5.6-mysql

配置mysql

首先进入mysql交互式命令行

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

# 创建数据库内容
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
配置myzoo
# 1. 复制myzoo到 /var/www/
sudo cp -r myzoo /var/www/
# 2. 配置myzoo中的数据相关的用户名、密码、数据名字等
sudo vim /var/www/myzoo/includes/database.class.php

# 提高参考, 需要更改成你自己的数据库密码<your_pass>
private $db_host = 'localhost';
private $db_user = 'root';
private $db_pass = "<your_pass>";
private $db_dbname = "";
配置apache2
# 创建配置文件
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/myzoo.conf
sudo vim /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

生成SSL证书
# 创建需要的文件
# 下面四句整体复制执行
mkdir -p ./demoCA/{private,newcerts} && \
touch ./demoCA/index.txt && \
touch ./demoCA/serial && \
echo 01 > ./demoCA/serial

# 生成CA根密钥,用于签名
openssl req -x509 -newkey rsa:2048 -keyout ./demoCA/private/cakey.pem -out ./demoCA/cacert.pem -outform PEM -days 3650

# 生成CA证书请求
# 注意CommonName必填, 比如www.myzoo.com
openssl req -days 3650 -newkey rsa:2048 -keyout ./demoCA/private/tempkey.pem -out tempreq.pem
openssl rsa < ./demoCA/private/tempkey.pem > ./demoCA/private/server_key.pem

# 签发证书
openssl ca -in tempreq.pem -out ./demoCA/server_crt.pem

# 配置apache2
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

# 信任证书,请勿使用chrome,证书要求极为严格
## 为了可以通过www.myzoo.com访问本地
## 注意: 下一行的www.myzoo.com需要同 生成CA证书请求 中填写的CommonName相同 
sudo sh -c " echo \"127.0.0.1     www.myzoo.com\" >> /etc/hosts"
浏览器中信任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
配置apache2
# 配置default-ssl.conf
sudo vim /etc/apache2/sites-available/default-ssl.conf

# 修改如下内容
DocumentRoot /var/www/myzoo
SSLCertificateFile      /etc/apache2/ssl/server.crt
SSLCertificateKeyFile   /etc/apache2/ssl/server.key

## 1. 开启SSL模块
sudo a2enmod ssl
## 2. 启用SSL站点
sudo a2ensite default-ssl

# 重启apache服务器
sudo service apache2 restart

浏览器输入https://www.myzoo.com查看结果 
这里的www.myzoo.com就是你输入的CommonName。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值