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

5693

被折叠的 条评论
为什么被折叠?



