Web安全实践实验

本文详细介绍了Web安全实践实验,包括网站加密过程、使用openssl生成公钥和私钥的步骤,以及实验中遇到的问题和解决方法。通过实验,加深了对Linux、加密原理和Apache2配置的理解。

Web安全实践实验

一、网站加密过程简介

 

CA(Certificate Authority)       加密          网站

步骤:

1.CA给浏览器厂商发公钥

2.阿里把公钥给CA,CA用自己的私钥加密阿里的公钥,返回给阿里

3.用户用浏览器访问阿里的网站,阿里把用CA的私钥加密过的自己的公钥给用户

4.用户用浏览器中的CA公钥解密阿里公钥,正确配对则信任访问的网站

二、使用openssl生产上面所说的四个公钥和私钥

1.给CA生成公钥和私钥。建立一个根目录放置所有文件,这里选择了/home/lichking/ssl。private文件夹用于存放CA的私钥,certs文件夹用于存放server颁发的证书的副本,index.txt文件作为证书的数据库文件,serial文件作为颁布证书的序号,先使用01.

   mkdir ssl

   cd ssl

mkdir privatecerts

chmod 777private

touch index.txt

echo ‘01’>serial

 

 

如上图,然后创建一个CA配置文件caconfig.conf,内容如下(划线部分需要修改):

[ ca ]

default_ca = local_ca

[ local_ca ]

dir = /home/lichking/ssl

certificate = $dir/cacert.pem

database = $dir/index.txt

new_certs_dir = $dir/certs

private_key = $dir/private/cakey.pem

serial = $dir/serial

default_crl_days = 365

default_days = 1825

default_md = sha1

policy = local_ca_policy

x509_extensions = local_ca_extensions

copy_extensions = copy

[ local_ca_policy ]

commonName = optional

stateOrProvinceName = optional

countryName = optional

emailAddress = optional

organizationName = optional

organizationalUnitName = optional

[ local_ca_extensions ]

basicConstraints = CA:false

[ req ]

default_bits = 2048

default_keyfile = /home/lichking/ssl/private/cakey.pem

default_md = sha1

prompt = no

distinguished_name = root_ca_distinguished_name

x509_extensions = root_ca_extensions

[ root_ca_distinguished_name ]

commonName = MyOwn Root Certificate Authority

stateOrProvinceName = NC

countryName = US

emailAddress = root@tradeshowhell.com

organizationName = Trade Show Hell

organizationalUnitName = IT Department

[ root_ca_extensions ]

basicConstraints = CA:true

 

[local_ca]下,dir为之前创建的文件夹的上级目录,此处为/home/lichking,如图

 

[req]下,default_keyfile也需要修改,此处为/home/lichking/private/cakey.pem

生成CA证书:opensslreq –x509 –newkey rsa:2048 –out cacert.pem –outform PEM –days 365 –configcaconfig.conf。

系统会要求输入CA密码,这个密码会长生成服务器证书时使用。我使用了lichking作为密码。private下会生成cakey.pem

 

2.生成网站的公钥和私钥

先生成一个配置文件server.conf

输入指令gedit server.conf,把下面的内容粘贴进去。

[ req ]

prompt = no

distinguished_name= server_distinguished_name

req_extensions =v3_req

[server_distinguished_name ]

commonName =localhost

stateOrProvinceName= NC

countryName = US

emailAddress =root@tradeshowhell.com

organizationName= My Organization Name

organizationalUnitName= Subunit of My Large Organization

[ v3_req ]

basicConstraints= CA:FALSE

keyUsage =nonRepudiation, digitalSignature, keyEncipherment

subjectAltName =@alt_names

[ alt_names ]

DNS.0 =localhost

DNS.1 =localhost

 

输入openssl req –newkeyrsa:1024 –keyout serverkey.pem –keyform PEM –out tempreq.pem –outform PEM –configserver.conf

要求输入密码,我输了123。

 

3.使用CA的私钥对第二步生成的公钥进行加密。

openssl ca –intempreq.pem –out server_crt.pem –config caconfig.conf

tempreq.pem就是第二步生成的公钥,输出为server_crt.pem,就是要加入到浏览器中的公钥。输入第一步生成CA时使用的密码lichking

 

4.修改/etc/apache2/sites-avaiable中default-ssl文件的SSLCertificateFile和SSLCertificateKeyFile,前面是用CA私钥加密过的网站公钥,后面是网站的私钥。

SSLCertificateFile        /home/lichking/ssl/server_crt.pem

SSLCertificateKeyFile      /home/lichking/ssl/serverkey.pem

 

5.执行a2enmod ssl 和a2ensite default-ssl启动SSL模块,执行service apache2 restart重启服务器。要求输入服务器私钥,我输的是123。

 

6.在firefox浏览器的Edit->Preferences->Advanced->Encryption->ViewCertificates->Authorities中import CA的根证书/home/lichking/ssl/cacert.pem文件

 

在浏览器输入https://localhost,完成实验。

 

三、实验中遇到的问题

这次实验是web安全实践的第一个实验,有的同学才刚开始用Linux,十分不熟悉,所以可能会出很多问题。属于基本操作的问题我这里就不写了,下面写我遇到的两个问题。

1.输入service apache2 restart后,显示错误job forapache2.service failed……输入systemctl status apache2.service后出现下面画面。

 

问题分析:这可能是因为apache2设置引起的,输入apache2ctl –t 查看出现的问题。

 

解决方法:如上图,显示文件/etc/ssl/server_crt.pem不存在,可能是之前的第三步出现了问题,重新做一边第三步。

 

 

2.在浏览器输入https://localhost后出现下面的画面

 

 

问题分析:仔细查看浏览器给出的错误提示,发现是serial number不对。可能是生成的证书编号重复了。

 

解决方法:回去改index.txt中的序列号。或者重新生成一遍证书。

 

附录:给第一次使用apache2的朋友

安装apache2:sudoapt-get install apache2

/etc/apache2下是配置文件

ports.conf是监听的端口

sites-available是可用的站点

 

建立一个新网站:

1.      修改apache2下的apache2.conf,全部改成granted

2.      进入sites-available文件夹,打开000-default.conf,把DocumentRoot改成网站的文件夹

3.      a2ensite 000-default

4.      service apache2 restart

5.      打开firefox,输入localhost就可以看到自己的网站了。

四、实验感想

  说实话这个实验对于第一次接触Linux的人来说挺难的,很多命令都没明白就开始做实验了。这次实验开始前要做的工作有安装一个虚拟机à安装ubuntuà安装openssl和apache2。

之后才是正式的实验。通过这次实验可以体会到网站密钥的生成过程,同时提高对Linux的熟悉程度。我第一次做这个实验的时候做了两天吧,前前后后做了5、6次,教同学又做了好几次。web安全实践课程就这样开始了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值