简述SSL记录协议的操作步骤
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简述SSL记录协议的操作步骤相关的知识,希望对你有一定的参考价值。
简述SSL记录协议的操作步骤
SSL客户端在TCP连接建立后,发出一消息,该消息中包含了SSL可实现的算法列表和其他一些必要的消息;
SSL的服务器端将回应一个消息,其中确定了该次通信所要用的算法,然后发出服务器端的证书;
客户端在收到该消息后会生成一个秘密消息,并用SSL服务器的公钥加密后传回服务器;
服务器用自己的私钥解密后,会话密钥协商成功;
双方用同一份会话密钥通信。
(2) 服务器以服务器“您好”消息响应,此消息包含密码方法(密码对)和由服务器选择的数据压缩方法,以及会话标识和另一个随机数。
注意:客户端和服务器至少必须支持一个公共密码对,否则握手失败。服务器一般选择最大的公共密码对。
(3) 服务器发送其SSL数字证书。(服务器使用带有 SSL 的 X.509 V3 数字证书。)
如果服务器使用 SSL V3,而服务器应用程序(如 Web 服务器)需要数字证书进行客户端认证,则客户端会发出“数字证书请求”消息。在 “数字证书请求”消息中,服务器发出支持的客户端数字证书类型的列表和可接受的CA的名称。
(4) 服务器发出服务器“您好完成”消息并等待客户端响应。
(5) 一接到服务器“您好完成”消息,客户端( Web 浏览器)将验证服务器的SSL数字证书的有效性并检查服务器的“你好”消息参数是否可以接受。
如果服务器请求客户端数字证书,客户端将发送其数字证书;或者,如果没有合适的数字证书是可用的,客户端将发送“没有数字证书”警告。此警告仅仅是警告而已,但如果客户端数字证书认证是强制性的话,服务器应用程序将会使会话失败。
(6) 客户端发送“客户端密钥交换”消息。此消息包含 pre-master secret(一个用在对称加密密钥生成中的 46 字节的随机数字),和 消息认证代码( MAC )密钥(用服务器的公用密钥加密的)。
如果客户端发送客户端数字证书给服务器,客户端将发出签有客户端的专用密钥的“数字证书验证”消息。通过验证此消息的签名,服务器可以显示验证客户端数字证书的所有权。
注意: 如果服务器没有属于数字证书的专用密钥,它将无法解密 pre-master 密码,也无法创建对称加密算法的正确密钥,且握手将失败。
(7) 客户端使用一系列加密运算将 pre-master secret 转化为 master secret,其中将派生出所有用于加密和消息认证的密钥。然后,客户端发出“更改密码规范” 消息将服务器转换为新协商的密码对。客户端发出的下一个消息(“未完成”的消息)为用此密码方法和密钥加密的第一条消息。
(8) 服务器以自己的“更改密码规范”和“已完成”消息响应。
(9) SSL 握手结束,且可以发送加密的应用程序数据。
具体你可要到沃通SSL证书网了解更多知识。 参考技术B
SSL记录协议在客户机和服务器握手成功后使用,即客户机和服务器鉴别对方和确定安全信息交换使用的算法后,进入SSL记录协议,记录协议向SSL连接提供两个服务:
(1)保密性:使用握手协议定义的秘密密钥实现
(2)完整性:握手协议定义了MAC,用于保证消息完整性
SSL记录协议主要包含以下信息:
内容类型
协议版本号,目前有2.0和3.0版本
记录数据的长度
数据由载荷
散列算法计算消息认证代码
SSL记录协议的过程图解:
SSL记录协议接收到应用程序所要传送的消息后,会将消息内的数据切成容易管理的小区块(分片),然后选择是否对这些区块作压缩,再加上此区块的消息认证码。接着将数据区块与MAC一起做加密处理,加上SSL记录头后通过TCP传送出去。接收数据的那一方则以解释、核查、解压缩,及重组的步骤将消息的内容还原,传送给上层使用者。
第九周作业
第九周作业
1、详细描述一次加密通讯的过程,结合图示最佳。
SSL协议基础:
SSL协议位于TCP/IP协议与各种应用层协议之间,本身又分为两层:
①SSL记录协议:建立在可靠传输层协议(TCP)之上,为上层协议提供数据封装、压缩、加密等基本功能。
②SSL握手协议:在SSL记录协议之上,用于实际数据传输前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
SSL协议通信过程:
①浏览器发送一个连接请求给服务器;服务器将自己的证书(包含服务器公钥S_PuKey)、对称加密算法种类及其他相关信息返回客户端。
②客户端浏览器检查服务器传送到CA证书是否由自己信赖的CA中心签发。若是,执行第4步;否则,给客户一个警告信息:询问是否继续访问
③客户端浏览器比较证书里的信息,如证书有效期、服务器域名和公钥S_PK,与服务器传回的信息是否一致;如果一致,则浏览器完成对服务器的身份认证.
④服务器要求客户端发送客户端证书(包含客户端公钥C_PuKey)、支持的对称加密方案及其他相关信息。收到后,服务器进行相同的身份认证,若没有通过验证,则拒绝连接;
⑤服务器根据客户端浏览器发送到密码种类,选择一种加密程度最高的方案,用客户端公钥C_PubKey加密后通知到浏览器;
⑥客户端通过私钥C_prKey解密后,得知服务器选择的加密方案,并选择一个通话密钥Key,接着用服务器公钥S_PuKey加密后发送服务器;
⑦服务器接收到的浏览器传送到消息,用私钥S_PrKey解密,获得通话密钥key。
⑧接下来的数据传输都使用该对称密钥Key进行加密。
上面所述的是双向认证SSL协议的具体通讯过程,服务器和用户双方必须都有证书。由此可见,SSL协议是通过非对称密钥机制保证双方身份认证,并完成建立连接,在实际数据通信时通过对称密钥机制保障数据安全性。
2、描述创建私有CA的过程,以及为客户端发来的证书请求进行办法证书。
第一步:在准备创建私有CA的主机上创建私有密钥
[[email protected] ~]# cd /etc/pki/CA [[email protected] CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048) Generating RSA private key, 2048 bit long modulus ........................................................+++ .........................................................................................+++ e is 65537 (0x10001)
第二步:创建作为CA主机所需要的文件
[[email protected] CA]# touch {index.txt,serial} [[email protected] CA]# echo 01 > serial
第三步:CA主机自身生成证书请求,也就是为自己颁发证书
[[email protected] CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ‘.‘, the field will be left blank. ----- Country Name (2 letter code) [XX]:cn State or Province Name (full name) []:guangdong Locality Name (eg, city) [Default City]:guangzhou Organization Name (eg, company) [Default Company Ltd]:trans Organizational Unit Name (eg, section) []:si Common Name (eg, your name or your server‘s hostname) []:ca.trans.com Email Address []:[email protected]
第四步:要使用证书的主机生成颁发证书请求
[[email protected] tmp]# mkdir ssl [[email protected] tmp]# cd ssl [[email protected] ssl]# (umask 077;openssl genrsa -out httpd.key 1024) Generating RSA private key, 1024 bit long modulus .++++++ ..++++++ e is 65537 (0x10001) [[email protected] ssl]# openssl req -new -key httpd.key -out httpd.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ‘.‘, the field will be left blank. ----- Country Name (2 letter code) [XX]:cn State or Province Name (full name) []:guangdong Locality Name (eg, city) [Default City]:guangzhou Organization Name (eg, company) [Default Company Ltd]:trans Organizational Unit Name (eg, section) []:si Common Name (eg, your name or your server‘s hostname) []:web.trans.com Email Address []:[email protected] Please enter the following ‘extra‘ attributes to be sent with your certificate request A challenge password []: An optional company name []: [[email protected] ssl]# ll 总用量 8 -rw-r--r--. 1 root root 700 10月 29 15:59 httpd.csr -rw-------. 1 root root 887 10月 29 15:57 httpd.key
第五步:将请求文件传输给CA所在主机;使用scp命令
[[email protected] ssl]# scp httpd.csr [email protected]:/tmp/ The authenticity of host ‘192.168.2.41 (192.168.2.41)‘ can‘t be established. RSA key fingerprint is 82:b3:88:c4:e5:5a:99:79:0c:44:60:a3:ed:b1:3f:0b. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added ‘192.168.2.41‘ (RSA) to the list of known hosts. [email protected]‘s password: httpd.csr 100% 700 0.7KB/s 00:00
第六步:CA所在主机签署证书,回应证书请求
[[email protected] CA]# openssl ca -in /tmp/httpd.csr -out certs/web.trans.com.crt -days 365 Using configuration from /etc/pki/tls/openssl.cnf Check that the request matches the signature Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: Oct 29 08:05:06 2016 GMT Not After : Oct 29 08:05:06 2017 GMT Subject: countryName = cn stateOrProvinceName = guangzhou organizationName = trans organizationalUnitName = si commonName = web.trans.com emailAddress = [email protected] X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: EF:50:FF:9C:6F:BC:23:04:6B:B7:AA:67:46:BD:42:34:B5:B5:4B:31 X509v3 Authority Key Identifier: keyid:49:5C:E2:87:2E:39:1B:C8:0E:DF:6E:39:4E:68:E4:01:2E:F4:C4:4B Certificate is to be certified until Oct 29 08:05:06 2017 GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated
第七步:CA所在的主机将签署完成的证书,发送回请求主机
[[email protected] CA]# scp certs/web.trans.com.crt 192.168.2.42:/tmp/ssl/ The authenticity of host ‘192.168.2.42 (192.168.2.42)‘ can‘t be established. RSA key fingerprint is a2:e7:82:94:f3:5d:47:10:27:12:b5:17:f2:e8:06:09. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added ‘192.168.2.42‘ (RSA) to the list of known hosts. [email protected]‘s password: web.trans.com.crt 100% 3850 3.8KB/s 00:00
3、搭建一套DNS服务器,负责解析magedu.com域名(自行设定主机名及IP)
(1)、能够对一些主机名进行正向解析和逆向解析;
(2)、对子域cdn.magedu.com进行子域授权,子域负责解析对应子域中的主机名;
(3)、为了保证DNS服务系统的高可用性,请设计一套方案,并写出详细的实施过程
(1)能够对一些主机名进行正向解析和逆向解析
①安装bind
[[email protected] ~]# yum install bind
②修改主配置文件
[[email protected] ~]# vim /etc/named.conf // // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { listen-on port 53 { any; }; //修改监听所有地址上的53端口 listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; //修改允许来自所有地址的查询请求 recursion yes; dnssec-enable no; //关闭dnssec相关功能 dnssec-validation no; //关闭dnssec相关功能 /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
③添加正反向解析区域
[[email protected] ~]# vim /etc/named.rfc1912.zones
在配置文件的最后添加如下两行配置,分别是正向和反向的配置。
zone "magedu.com." IN { type master; file "magedu.com.zone"; allow-transfer { 192.168.2.44; }; }; //正向解析区域 zone "2.168.192.in-addr.arpa" IN { type master; file "2.168.192.zone"; allow-transfer { 192.168.2.44; }; }; //反向解析区域
④配置正向区域文件
[[email protected] ~]# vim /var/named/magedu.com.zone $TTL 1D $ORIGIN magedu.com. @ IN SOA ns1.magedu.com. admin.magedu.com.( 2016102901 1H 5M 7D 12H ) IN NS ns IN NS ns2 //辅助DNS使用 IN MX 10 mx1 ns1 IN A 192.168.2.43 ns2 IN A 192.168.2.44 //辅助DNS使用 mx1 IN A 192.168.2.43 www IN A 192.168.2.43 ftp IN CNAME www
⑤配置反向区域文件
[[email protected] ~]# vim /var/named/2.168.192.zone $TTL 86400 $ORIGIN 2.168.192.in-addr.arpa. @ IN SOA ns1.magedu.com. admin.magedu.com. ( 2016102601 1H 5M 7D 12H ) IN NS ns1.magedu.com. @ IN NS ns2.magedu.com. //辅助DNS使用 43 IN PTR ns1.magedu.com. 44 IN PTR ns2.magedu.com. //辅助DNS使用 43 IN PTR www.magedu.com. 43 IN PTR mx1.magedu.com.
⑥检查正反向区域文件
[[email protected] ~]# named-checkzone magedu.com /var/named/magedu.com.zone zone magedu.com/IN: loaded serial 2016102901 OK [[email protected] ~]# named-checkzone 2.168.192.in-addr.arpa /var/named/2.168.192.zone zone 2.168.192.in-addr.arpa/IN: loaded serial 2016102601 OK
⑦启动域名解析服务
[[email protected] ~]# service named start 启动 named: [确定]
⑧正向解析检查
[[email protected] ~]# dig @192.168.2.43 www.magedu.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.2 <<>> @192.168.2.43 www.magedu.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46452 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.magedu.com. IN A ;; ANSWER SECTION: www.magedu.com. 86400 IN A 192.168.2.43 ;; AUTHORITY SECTION: magedu.com. 86400 IN NS ns2.magedu.com. magedu.com. 86400 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 86400 IN A 192.168.2.43 ns2.magedu.com. 86400 IN A 192.168.2.44 ;; Query time: 1 msec ;; SERVER: 192.168.2.43#53(192.168.2.43) ;; WHEN: Sun Oct 30 05:59:03 2016 ;; MSG SIZE rcvd: 116
⑨反向解析测试
[[email protected] ~]# dig -x 192.168.2.43 @192.168.2.43 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.2 <<>> -x 192.168.2.43 @192.168.2.43 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65223 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;43.2.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 43.2.168.192.in-addr.arpa. 86400 IN PTR www.magedu.com. 43.2.168.192.in-addr.arpa. 86400 IN PTR mx1.magedu.com. 43.2.168.192.in-addr.arpa. 86400 IN PTR ns1.magedu.com. ;; AUTHORITY SECTION: 2.168.192.in-addr.arpa. 86400 IN NS ns2.magedu.com. 2.168.192.in-addr.arpa. 86400 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 86400 IN A 192.168.2.43 ns2.magedu.com. 86400 IN A 192.168.2.44 ;; Query time: 1 msec ;; SERVER: 192.168.2.43#53(192.168.2.43) ;; WHEN: Sun Oct 30 06:00:22 2016 ;; MSG SIZE rcvd: 171
(2)保证DNS服务系统的高可用性
在正向解析库和反向解析库文件中添加辅助DNS服务器的信息,上述配置中已经标记出来了。辅DNS只需要创建区域文件,不需要创建区域数据文件,它的数据文件会从主服务器哪里同步过来。同步的数据在/var/named/slaves/目录中。
编辑辅DNS服务器上的/etc/named.rfc1912.zones文件,最后面添加如下内容:
zone "magedu.com" IN { type slave; masters { 192.168.2.43; }; file "slaves/magedu.com.zone"; allow-transfer { none; }; }; zone "2.168.192.in-addr.arpa" IN { type slave; masters { 192.168.2.43; }; file "slaves/2.168.192.zone"; allow-transfer { none; }; };
指定type类型为slave(辅助)类型,并指定主服务器master { 192.168.2.43; };,allow-transter { none; };表示该从服务器不允许其他主机再同步DNS的数据。然后named-checkconf检查语法错误,然后# service named start即可
(3)子域授权
父域的IP为192.168.2.43,父域的从IP是192.168.2.44,子域的IP为192.168.2.45
①在父域的区域文件中添加NS和A记录
[[email protected] ~]# vim /var/named/magedu.com.zone cdn.magedu.com. IN NS ns.cdn.magedu.com. ns.cdn.magedu.com. IN A 192.168.2.45
②现在开始配置子域的DNS
[[email protected] ~]# vim /etc/named.rfc1912.zones zone "cdn.magedu.com" IN { type master; file "cdn.magedu.com"; }; zone "magedu.com" IN { type forward; forward only; forwarders { 192.168.2.43; }; };
③编辑子域的服务器上区域文件
[[email protected] ~]# vim /var/named/cdn.magedu.com.zone $TTL 86400 @ IN SOA ns.cdn.magedu.com. admin.cdn.magedu.com.( 2016102901 2H 5M 7D 12H ) IN NS ns.cdn.magedu.com. IN MX 10 mx1.cdn.magedu.com. ns.cdn.magedu.com. IN A 192.168.2.45 mx1.cdn.magedu.com. IN A 192.168.2.45 www IN A 192.168.2.45
检查语法,然后reload服务即可
4、请描述一次完整的http请求处理过程;
①向根域名服务器请求解析域名,然后根服务器返回相应的IP信息;
②用户的Web浏览器向服务器端的80端口通过三次握手建立TCP连接;
③建立完TCP连接后发送HTTP请求,请求的格式包括请求方法、URL和协议版本号,方法有GET、HEAD、POST、PUT、DELETE、OPTIONS、TRACE,如:
起始行:如 GET / HTTP/1.0 (请求的方法 请求的URL 请求所使用的协议)
头部信息:User-Agent Host等成对出现的值
主体
④服务器向客户端相应http的头信息,客户端收到后确认,然后http服务器发送数据;
⑤浏览器接收到数据后,解析数据并通过浏览器把画面呈现给用户;
⑥数据传送完成后,四次断开TCP连接;
5、httpd所支持的处理模型有哪些,他们的分别使用于哪些环境。
httpd所支持的事务处理模型主要有:prefork、worker、event
prefork:多进程模型,每个进程响应一个请求。一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲进程, 随时等待请求到达;最大不会超过1024个;
worker:多线程模型,每个线程响应一个请求;一个主进程:生成多个子进程,每个子进程负责生个多个线程,每个线程响应一个请求;
event:事件驱动模型,每个线程响应n个请求;一个主进程:生成m个子进程,每个子进程直接响应n个请求;
适合的场景:
perfork:它适合于没有线程安全库,需要避免线程兼容性问题的系统;
worker:适合内存占用量比较小,适合高流量的http服务器。缺点是假如一个线程崩溃,整个进程就会连同其任何线程一起死掉;prefork方式速度要稍高于worker,然而它需要的cpu和memory资源也稍多于woker。
6、建立httpd服务器(基于编译的方式进行),要求:
提供两个基于名称的虚拟主机:
(a)www1.stuX.com,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1.err,访问日志为/var/log/httpd/www1.access;
(b)www2.stuX.com,页面文件目录为/web/vhosts/www2;错误日志为/var/log/httpd/www2.err,访问日志为/var/log/httpd/www2.access;
(c)为两个虚拟主机建立各自的主页文件index.html,内容分别为其对应的主机名;
(d)通过www1.stuX.com/server-status输出httpd工作状态相关信息,且只允许提供帐号密码才能访问(status:status);
一、编译安装httpd
①编译安装apr
[[email protected] apr-1.5.1]# ./configure --prefix=/usr/local/apr [[email protected] apr-1.5.1]#make && make install
②编译安装apr-util
[[email protected] ]# cd apr-util-1.5.4 [[email protected] apr-util-1.5.4]# ./configure --with-apr=/usr/local/apr --prefix=/usr/local/apr-util [[email protected] apr-util-1.5.4]# make && make install
③编译安装htppd
[[email protected] ]# cd httpd-2.4.23 [[email protected] httpd-2.4.23]# ./configure --prefix=/usr/local/apache --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork [[email protected] httpd-2.4.23]# make && make install
二、创建站点
①创建站点目录
[[email protected] httpd-2.4.23]# mkdir -pv /web/vhosts/{www1,www2}/ mkdir: 已创建目录 "/web" mkdir: 已创建目录 "/web/vhosts" mkdir: 已创建目录 "/web/vhosts/www1/" mkdir: 已创建目录 "/web/vhosts/www2/"
②创建站点文件
[[email protected] httpd-2.4.23]# echo "www1.stuX.com" > /web/vhosts/www1/index.html [[email protected] httpd-2.4.23]# echo "www2.stuX.com" > /web/vhosts/www2/index.html
三、创建虚拟主机
①编译主配置文件
[[email protected] httpd-2.4.23]# vim /usr/local/apache/conf/httpd.conf #DocumentRoot "/usr/local/apache/htdocs" Include conf/extra/httpd-vhosts.conf
②编译虚拟主机文件
[[email protected] httpd-2.4.23]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf <VirtualHost *:80> # ServerAdmin [email protected] DocumentRoot "/web/vhosts/www1" ServerName www1.stuX.com # ServerAlias www.dummy-host.example.com ErrorLog "/var/log/httpd/www1.err" CustomLog "/var/log/httpd/www1.access" common <Directory "/web/vhosts/www1"> options none allowoverride none Require all granted </Directory> </VirtualHost> <VirtualHost *:80> # ServerAdmin [email protected] DocumentRoot "/web/vhosts/www2" ServerName www2.stuX.com ErrorLog "/var/log/httpd/www2.err" CustomLog "/var/log/httpd/www2.access" common <Directory "/web/vhosts/www2"> options none allowoverride none Require all granted </Directory> </VirtualHost>
③创建status监控页面并添加认证功能
[[email protected] apache]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf <VirtualHost *:80> # ServerAdmin [email protected] DocumentRoot "/web/vhosts/www1" ServerName www1.stuX.com # ServerAlias www.dummy-host.example.com ErrorLog "/var/log/httpd/www1.err" CustomLog "/var/log/httpd/www1.access" common <location /server-status> SetHandler server-status AuthType Basic AuthName "Server-Status" AuthUserFile "/usr/local/apache/.htpasswd" Require valid-user </location> <Directory "/web/vhosts/www1"> options none allowoverride none Require all granted </Directory> </VirtualHost>
④创建虚拟用户
[[email protected] ]#htpasswd -c -m /usr/local/apache/.htpasswd status
⑤重启并测试
[[email protected]]# /usr/local/apache/bin/apachectl restart [[email protected] apache]# curl www1.stuX.com www1.stuX.com [[email protected] apache]# curl www2.stuX.com www2.stuX.com
7、为第6题中的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;
(1)要求使用证书认证,证书中要求使用的国家(CN)、州(HA)、城市(ZZ)和组织(MageEdu);
(2)设置部门为Ops,主机名为www2.stuX.com,邮件为[email protected];
第一步:在准备创建私有CA的主机上创建私有密钥
[[email protected] ~]# cd /etc/pki/CA [[email protected] CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048) Generating RSA private key, 2048 bit long modulus ........................................................+++ .........................................................................................+++ e is 65537 (0x10001)
第二步:创建作为CA主机所需要的文件
[[email protected] CA]# touch {index.txt,serial} [[email protected] CA]# echo 01 > serial
第三步:CA主机自身生成证书请求,也就是为自己颁发证书
[[email protected] CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ‘.‘, the field will be left blank. ----- Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:HA Locality Name (eg, city) [Default City]:ZZ Organization Name (eg, company) [Default Company Ltd]:MageEdu Organizational Unit Name (eg, section) []:Ops Common Name (eg, your name or your server‘s hostname) []:www2.stux.com Email Address []:[email protected]
第四步:要使用证书的主机生成颁发证书请求
[[email protected] etc]# mkdir /etc/httpd/certs [[email protected] etc]# cd /etc/httpd/certs [[email protected] certs]# (umask 077;openssl genrsa -out httpd.key 2048) Generating RSA private key, 1024 bit long modulus .++++++ ..++++++ e is 65537 (0x10001) [[email protected] certs]# openssl req -new -key httpd.key -out httpd.csr -days 3650 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ‘.‘, the field will be left blank. ----- Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:HA Locality Name (eg, city) [Default City]:ZZ Organization Name (eg, company) [Default Company Ltd]:MageEdu Organizational Unit Name (eg, section) []:Ops Common Name (eg, your name or your server‘s hostname) []:www2.stux.com Email Address []:[email protected] Please enter the following ‘extra‘ attributes to be sent with your certificate request A challenge password []: An optional company name []:
第五步:配置httpd服务使用数字证书
[[email protected] certs]# ls httpd.csr httpd.key [[email protected] certs]# openssl ca -in httpd.csr-out httpd.crt -days 3650 Using configuration from /etc/pki/tls/openssl.cnf Check that the request matches thesignature Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: Oct 29 09:15:06 2016 GMT Not After : Oct 29 09:15:06 2017 GMT Subject: countryName = CN stateOrProvinceName = HA organizationName = MageEdu organizationalUnitName = Ops commonName =www2.stux.com emailAddress = [email protected] X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 9A:84:73:63:C0:82:7F:45:21:9C:BA:2B:4C:FB:C3:87:7C:BA:63:58 X509v3 Authority Key Identifier: keyid:1C:57:C2:12:E4:D3:A6:4F:9A:7A:C6:53:7F:5B:7B:86:1E:75:0D:57 Certificate is to be certified until Oct 29 09:15:06 2017 GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated
第六步:配置https服务器加密传输
[[email protected] certs]# yum install mod_ssl -y [[email protected] ~]# rpm -qa mod_ssl mod_ssl-2.2.15-39.el6.centos.x86_64 [[email protected] conf.d]# ls mod_dnssd.conf README ssl.conf welcome.conf [[email protected] conf.d]#vim /etc/httpd/conf.d/ssl.conf LoadModule ssl_module modules/mod_ssl.so Listen 443 <VirtualHost 192.168.0.130:443> DocumentRoot"/web/vhosts/www2" ServerName www2.stuX.com:443 SSLEngineon SSLCertificateFile /etc/httpd/certs/httpd.crt SSLCertificateKeyFile /etc/httpd/certs/httpd.key </VirtualHost>
8、建立samba共享,共享目录为/data,要求:(描述完整的过程)
1)共享名为shared,工作组为magedu;
2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;
3)添加samba用户gentoo,centos和ubuntu,密码均为“mageedu”;
4)此samba共享shared仅允许develop组具有写权限,其他用户只能以只读方式访问;
5)此samba共享服务仅允许来自于172.16.0.0/16网络的主机访问;
第一步:安装samba服务
[[email protected] ~]# yum -y install samba*
第二步:添加用户并创建密码
[[email protected] ~]# groupadd develop [[email protected] ~]# useradd -G develop gentoo [[email protected] ~]# useradd -G develop centos [[email protected] ~]# useradd ubuntu [[email protected] ~]# echo "gentoo" | passwd --stdin gentoo [[email protected] ~]# echo "centos" | passwd --stdin centos [[email protected] ~]# echo "ubuntu" | passwd --stdin ubuntu [[email protected] ~]# smbpasswd -a gentoo New SMB password: Retype new SMB password: Added user gentoo. [[email protected] ~]# smbpasswd -a centos New SMB password: Retype new SMB password: Added user centos. [[email protected] ~]# smbpasswd -a ubuntu New SMB password: Retype new SMB password: Added user ubuntu.
第三步:编辑/etc/samba/smb.conf
workgroup = magedu hosts allow = 192.168.2 [shared] comment = Haosmb path = /data guest = yes writable = no write list = +develop
使用service smb restart重启服务
9、搭建一套文件vsftp文件共享服务,共享目录为/ftproot,要求:(描述完整的过程)
1)基于虚拟用户的访问形式;
2)匿名用户只允许下载,不允许上传;
3)禁锢所有的用户于其家目录当中;
4)限制最大并发连接数为200:;
5)匿名用户的最大传输速率512KB/s
6)虚拟用户的账号存储在mysql数据库当中。
7)数据库通过NFS进行共享。
第一步:安装所需要程序
安装mysql和pam_mysql
[[email protected] ~]# yum -y install vsftpd mysql-server mysql-devel pam_mysql
第二部:创建虚拟用户账号
①准备数据库及相关表
首先请确保mysql服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库。
mysql> create database vsftpd; mysql> grant select on vsftpd.* to [email protected] identified by ‘www.magedu.com‘; mysql> grant select on vsftpd.* to [email protected] identified by ‘www.magedu.com‘; mysql> flush privileges; mysql> use vsftpd; mysql> create table users ( -> id int AUTO_INCREMENT NOT NULL, -> name char(20) binary NOT NULL, -> password char(48) binary NOT NULL, -> primary key(id) -> );
②添加测试的虚拟用户
根据需要添加所需要的用户,需要说明的是,这里将其密码为了安全起见应该使用PASSWORD函数加密后存储。
mysql> insert into users(name,password) values(‘tom‘,password(‘magedu‘)); mysql> insert into users(name,password) values(‘jerry‘,password(‘magedu‘));
第三步:配置vsftpd
①建立pam认证所需文件
[[email protected] ~]#vi /etc/pam.d/vsftpd.mysql
添加如下两行
auth required /lib/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0 account required /lib/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
注意:由于mysql的安装方式不同,pam_mysql.so基于unix sock连接mysql服务器时可能会出问题,此时,建议授权一个可远程连接的mysql并访问vsftpd数据库的用户。
②修改vsftpd的配置文件,使其适应mysql认证
建立虚拟用户映射的系统用户及对应的目录
[[email protected] ~]# useradd -s /sbin/nologin -d /var/ftproot vuser [[email protected] ~]# chmod go+rx /var/ftproot
请确保/etc/vsftpd.conf中已经启用了以下选项
anonymous_enable=YES local_enable=YES write_enable=YES anon_world_readable_only=YES anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO chroot_local_user=YES chroot_local_user=YES local_root=/ftproot anon_root=/ftproot
而后添加以下选项
guest_enable=YES guest_username=vuser
并确保pam_service_name选项的值如下所示
pam_service_name=vsftpd.mysql
第四步:启动vsftpd服务
[[email protected] ~]# service vsftpd start [[email protected] ~]# chkconfig vsftpd on
第五步:配置虚拟用户具有不同的访问权限
vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。
①配置vsftpd为虚拟用户使用配置文件目录
[[email protected] ~]# vim vsftpd.conf
添加如下选项
user_config_dir=/etc/vsftpd/vusers_config
②创建所需要目录,并为虚拟用户提供配置文件
[[email protected] ~]# mkdir /etc/vsftpd/vusers_config/ [[email protected] ~]# cd /etc/vsftpd/vusers_config/ [[email protected] ~]# touch tom jerry
③配置虚拟用户的访问权限
虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具没有上传,删除文件的权限,可以修改/etc/vsftpd/vusers_config/tom文件,
在里面添加如下选项即可。
anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
以上是关于简述SSL记录协议的操作步骤的主要内容,如果未能解决你的问题,请参考以下文章