Web安全实践实验 -> 网络安全实践试验

访客 170 0

Web安全实践实验

一、网站加密过程简介

 

CA(证书颁发机构)是负责加密网站的重要组成部分。

步骤:

1. CA向浏览器制造商发送公钥。

2. 阿里将公钥提供给CA,随后CA使用其私钥对阿里的公钥进行加密,并将加密后的结果返回给阿里。

当用户使用浏览器访问阿里巴巴的网站时,阿里巴巴会将经过CA私钥加密的自身公钥提供给用户。

4. 用户使用浏览器中的CA公钥对阿里公钥进行解密,如果成功匹配,则信任所访问的网站。

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

1. 为CA生成公钥和私钥,并创建一个根目录,将所有文件放置在其中。在这里,我们选择了/home/lichking/ssl作为根目录。私钥将存放在private文件夹中,而certs文件夹则用于存放服务器颁发的证书副本。此外,我们还需要创建一个index.txt文件作为证书的数据库,并使用serial文件来记录颁发证书的序号。首先,让我们使用01作为初始序号。

创建一个名为ssl的文件夹。

   cd ssl

创建一个名为privatecerts的目录。

chmod 777private

触摸 index.txt

将 echo '01' > serial 改写为更易读的句子:将字符串 01 写入文件 serial。

 

 

根据上图所示,接下来请创建一个名为caconfig.conf的CA配置文件,其内容如下(需要修改的部分已用划线标出):

[ ca ]

将default_ca = local_ca改写为更通俗易懂的表达方式,可以使用以下几种方式: 1. 将默认证书机构设置为本地证书机构。 2. 使用本地证书机构作为默认选项。 3. 默认情况下采用本地证书机构。

[ local_ca ]

目录为:/home/lichking/ssl

证书路径 = $dir/cacert.pem

数据库路径为$dir/index.txt

将 new_certs_dir = $dir/certs 改写为: 新的证书目录 = $dir/certs

private_key = $dir/private/cakey.pem

serial = $dir/serial

将“default_crl_days = 365”改写为: default_crl_days is set to 365.

default_days = 1825 can be rewritten as the value of default_days is set to 1825.

默认的消息摘要算法是SHA-1。

policy equals local_ca_policy.

将x509_extensions = local_ca_extensions改写为更通俗易懂的表达方式,可以这样写:使用本地CA扩展进行x509证书扩展。

将copy_extensions设置为copy

【当地CA政策】

commonName = optional

stateOrProvinceName is optional.

optional - 国家名称(可选)

电子邮件地址:可选填

可选的组织名称:organizationName

organizationalUnitName is optional

[ local_ca_extensions ]

basicConstraints = CA:false Rewritten: The basicConstraints value is set to CA:false.

[ req ]

将“default_bits = 2048”改写为“默认位数为2048”。

默认密钥文件路径为:/home/lichking/ssl/private/cakey.pem

默认的消息摘要算法是SHA-1。

无提示

distinguished_name = root_ca_distinguished_name

将“x509_extensions = root_ca_extensions”改写为“root_ca_extensions = x509_extensions”。

[根证书颁发机构的可分辨名称]

通用名称:MyOwn根证书颁发机构

stateOrProvinceName = NC can be rewritten as the state or province name is NC.

countryName = US can be rewritten as the value of countryName is set to US.

电子邮件地址:[email protected]

organizationName = Trade Show Hell

organizationalUnitName = Information Technology Department

[根证书扩展]

basicConstraints: CA:true

 

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

 

请修改default_keyfile为/home/lichking/private/cakey.pem。

使用以下命令生成CA证书:openssl req -x509 -newkey rsa:2048 -out cacert.pem -outform PEM -days 365 -config caconfig.conf。

在系统中,您将被要求输入CA密码。这个密码将在生成服务器证书时使用。我选择了lichking作为我的密码。此后,cakey.pem文件将在私有目录下生成。

 

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

首先,生成一个名为server.conf的配置文件。

请将以下内容复制并粘贴到服务器配置文件server.conf中,输入命令gedit server.conf。

[ req ]

无提示

修改后的文案如下:“server_distinguished_name被赋予了distinguished_name的尊贵身份。”

将下面的这段话改写为“req_extensions = v3_req”

[server_distinguished_name ] can be rewritten as: The distinguished name of the server.

常见名称为“localhost”。

stateOrProvinceName=NC can be rewritten as the state or province name is NC.

countryName = US can be rewritten as the value of countryName is set to US.

电子邮件地址:[email protected]

组织名称:我的组织名称

organizationalUnitName= Subunit of My Large Organization

[ v3_req ]

basicConstraints: CA:FALSE可以改写为:basicConstraints with the value of CA set to FALSE.

keyUsage包括nonRepudiation、digitalSignature和keyEncipherment。

将“subjectAltName =@alt_names”改写为更通俗易懂的表达方式: 使用“subjectAltName”来代替“@alt_names”。

[ alt_names ]可以改写为“[ alternative names ]”

DNS.0等于本地主机

DNS.1 =localhost

 

请使用以下命令输入: openssl req -newkey rsa:1024 -keyout serverkey.pem -keyform PEM -out tempreq.pem -outform PEM -config server.conf

在输入密码时,我不小心输成了123。

 

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

使用以下命令生成服务器证书: openssl ca -in intempreq.pem -out server_crt.pem -config caconfig.conf

tempreq.pem是在第二步生成的公钥,它会被输出为server_crt.pem,这就是需要添加到浏览器中的公钥。输入的密码应该与生成CA时使用的密码相同,即lichking。

 

修改/etc/apache2/sites-available中default-ssl文件的SSLCertificateFile和SSLCertificateKeyFile,前者是经过CA私钥加密的网站公钥,后者则是网站的私钥。

SSLCertificateFile 的路径是 /home/lichking/ssl/server_crt.pem。

SSLCertificateKeyFile的路径是/home/lichking/ssl/serverkey.pem。

 

执行以下命令来启动SSL模块:a2enmod ssl 和 a2ensite default-ssl。然后,使用service apache2 restart命令重启服务器。请提供服务器私钥,我输入的是123。

 

在Firefox浏览器中,点击Edit(编辑)菜单,选择Preferences(首选项),然后进入Advanced(高级)选项卡。在Encryption(加密)下找到View Certificates(查看证书),再点击Authorities(授权机构)。接着,在该页面中导入CA的根证书,即/home/lichking/ssl/cacert.pem文件。

 

输入以下网址在浏览器中:https://localhost,以完成实验。

 

三、实验中遇到的问题

这是web安全实践中的首个实验,有些同学刚开始接触Linux,对其并不熟悉,因此可能会遇到许多问题。关于基本操作的问题,在此就不再赘述,下面我将描述我所遇到的两个问题。

在执行service apache2 restart命令后,出现了错误提示job for apache2.service failed...。接着,输入systemctl status apache2.service命令后,显示了以下信息。

 

问题分析:可能是由于apache2的设置引起的,可以通过输入apache2ctl –t来查看出现的问题。

 

解决方案:请参考上图,若显示文件路径/etc/ssl/server_crt.pem不存在,可能是之前的第三步操作出现了问题,请重新执行第三步操作。

 

 

2. 当您在浏览器中输入https://localhost后,会显示如下界面。

 

 

问题分析:经过仔细检查浏览器所提供的错误提示,我们发现了一个serial number不匹配的问题。很可能是由于生成的证书编号重复导致的。

 

解决方案:您可以尝试以下两种方法来解决问题。一是回到index.txt文件中修改序列号,另一种是重新生成证书。

 

附录:为初次使用apache2的朋友提供指南

通过使用以下命令安装Apache2:sudo apt-get install apache2

配置文件位于/etc/apache2目录下。

ports.conf是用于监听端口的配置文件。

sites-available是可供使用的站点

 

创建一个全新的网站:

1. 将apache2.conf文件中的所有内容修改为granted。

2. 打开sites-available文件夹,找到000-default.conf文件,并将其中的DocumentRoot修改为网站所在的文件夹路径。

启用000-default网站的命令是“a2ensite 000-default”。

4. 请执行命令“service apache2 restart”来重新启动Apache服务。

使用Firefox浏览器打开,输入“localhost”即可查看您的网站。

四、实验感想

坦率地说,对于初次接触Linux的人来说,这个实验相当具有挑战性。许多命令都不太容易理解就开始进行实验了。在开始本次实验之前,需要先完成一些准备工作:安装一个虚拟机、安装Ubuntu操作系统以及安装OpenSSL和Apache2软件。

在正式实验之前,我们将进行一次实验,通过这次实验可以深入了解网站密钥的生成过程,并提高对Linux的熟悉程度。我第一次尝试这个实验花了两天时间,反复进行了5、6次,并且还帮助同学们多次完成。就这样,web安全实践课程拉开了帷幕。

标签: 阿里 网站 证书 问题

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~