码迷,mamicode.com
首页 > 系统相关 > 详细

【linux基础】第九周作业

时间:2016-11-10 09:45:04      阅读:388      评论:0      收藏:0      [点我收藏+]

标签:测试   win   httpd   代码   default   slave   lib   src   tab   

1、详细描述一次加密通讯的过程,结合图示最佳。

加密通讯:A <——> B

1)A与 B通信,首先A、B双方都应该持有对方的公钥,即证书,并验证证书的合法性。

2)加密:

             i.     A将要发送的数据进行散列计算,并提取特征码(又叫指纹信息)

           ii.     A对明文数据的指纹信息使用自己的私钥加密,生成数字签名,并将数字签名附加到明文数据之后。

          iii.     A再使用一个一次性的对称加密算法对明文和数字签名进行加密,生成对应的密文。

           iv.     A再使用B的公钥对对称加密的密钥进行加密,生成数字信封。

             v.     A将密文和数字信封打包发送给B。加密完成。

3)解密:

             i.     B收到A发送过来数据包,进行解密,首先使用B的私钥对数字信封进行解密,取得钥匙(A对明文和数字签名加密的一次性对称密钥);

           ii.     B取得打开密文的一次性秘钥后,对密文进行解密操作,解开后即可得到明文数据和数字签名;若无法解密则说明数据被更改,不可信;

          iii.     B使用A的公钥解密数字签名,得到明文数据的特征码,能解出说明数据是A所发送,否则不可信。

           iv.     B对取得的明文数据进行散列计算,提取特征码,并与A所发送过来的特征码进行比较,相同则说明数据正确未被更改;不同则说明数据不是A所发,不可信。

             v.     B通过一层层解密得到A发送的明文数据并验证其真实性,至此解密完成。

 

技术分享 

 

2、描述创建私有CA的过程,以及为客户端发来的证书请求进行办法证书。

第一步:自建私有CA主机1

openssl的配置文件:www.qixoo.qixoo.com/etc/pki/tls/openssl.cnf

1)创建所需要的文件:cd /etc/pki/CA/

 touch index.txt

echo 01 > serial

 [ CA]# tree

.
├── cacert.pem
├── certs
├── crl
├── index.txt
├── newcerts
│   ├── 01httpd.pem
│   └── 01.pem
├── private
│   └── cakey.pem
├── serial
└── serial.old

 

 

 

2)CA自签证书

#(umask 077 ;opensslgenrsa -out private/cakey.pem 2048)

#openssl req -new -x509-key qkxue.net/private/cakey.pem -days 3650 -out  cacert.pem

-new:生成新证书签署请求

-x509:专用于CA生成自签证书

-key:生成请求时用到的私钥文件

-days ###:证书有效期限###

-out/PATH/TO/SOMEWCERTFILE :证书保存路径

 

[ CA]# openssl x509 -in cacert.pem -noout -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 15788607697337265536 (0xdb1c670c91c92d80)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=cn, ST=hubei, L=hubei, O=longjingcun, OU=Ops, 
        Validity
            Not Before: Sep 24 01:43:32 2016 GMT
            Not After : Sep 22 01:43:32 2026 GMT
        Subject: C=cn, ST=hubei, L=hubei, O=longjingcun, OU=Ops, 
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:c2:3a:c0:a0:b2:fe:9b:0f:d5:91:43:31:e9:85:
                    47:a8:ad:b7:16:06:c7:04:6a:46:67:c4:41:e7:05:
                    6c:4b:8f:6a:dd:94:48:a5:04:93:20:cb:f6:ec:65:
                    b2:49:12:76:f3:e8:a5:b6:0c:80:0b:d9:ae:9d:23:
                    b1:3f:c3:6a:3c:00:d9:36:bb:da:4e:24:3b:71:f6:
                    f0:c5:28:2a:24:72:c9:ac:c8:6e:5a:aa:0c:21:60:
                    b5:f1:ff:3f:7c:d6:a8:a0:4c:42:b8:c1:f5:d5:de:
                    b7:37:be:38:6a:bf:6d:a1:0a:97:be:b9:22:25:d6:
                    6c:f0:fd:af:5e:27:aa:cf:7e:64:e9:8e:0d:a9:b0:
                    0b:5b:95:cd:20:7b:8d:23:64:2f:0a:07:86:2b:32:
                    2f:13:0b:66:f1:35:f3:75:37:c9:a0:3e:49:40:5f:
                    e6:6a:89:58:d4:77:c3:cc:db:aa:46:e3:8e:b1:3d:
                    d3:5b:22:bf:1e:4d:48:7f:a5:0b:eb:6e:a9:b7:5b:
                    e1:10:80:0d:7d:38:21:ac:60:a1:95:5e:2c:d7:72:
                    ee:b1:fd:52:df:70:a5:6f:6e:aa:4c:cb:82:bb:8c:
                    a7:0a:e8:b4:f7:ea:06:7a:fd:b3:00:b9:8c:6a:17:
                    7d:69:d7:c6:2f:83:c6:35:12:1c:f5:ff:d2:0a:cf:
                    1e:6d
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier: 
                01:E4:14:ED:C7:E3:1A:24:17:DE:15:F2:45:D3:1C:FD:D4:E3:52:A3
            X509v3 Authority Key Identifier: 
                keyid:01:E4:14:ED:C7:E3:1A:24:17:DE:15:F2:45:D3:1C:FD:D4:E3:52:A3
  
            X509v3 Basic Constraints: 
                CA:TRUE
    Signature Algorithm: sha1WithRSAEncryption
         86:b8:78:0b:af:02:1b:de:4c:d8:fb:56:cc:3c:48:e8:0a:2a:
         f3:26:7e:33:b5:b0:3b:b8:b7:c1:66:aa:f2:a6:7a:42:82:6a:
         22:76:64:b3:5c:25:4f:c4:1e:24:0c:51:48:56:58:1d:ae:83:
         66:bf:50:6f:81:97:2e:69:3d:fa:35:c3:b0:0f:7f:2f:3f:40:
         99:be:1a:ca:5c:67:b6:7e:bd:b8:67:2d:62:42:8f:b3:fb:e2:
         c3:5f:80:fb:07:ab:69:10:db:5f:13:b3:61:bd:23:aa:f9:13:
         0b:1d:e6:df:98:37:51:a5:f9:9f:e8:e1:f5:13:a7:96:7c:c2:
         20:cf:b4:22:d3:d0:90:a2:65:a7:1f:b9:06:6a:5d:8e:00:ac:
         55:6b:cd:3a:10:e5:f0:3e:d3:9f:59:a8:f6:a9:2a:cd:70:a8:
         21:d7:7d:bc:41:a9:3a:66:13:3f:63:e3:be:fe:3d:be:7c:06:
         33:3e:f5:7e:e6:68:7f:a7:60:5d:f8:0a:80:a7:6d:3a:36:b0:
         97:71:7a:f5:2c:a1:35:d5:1a:f3:f3:a0:b3:34:58:88:39:36:
         fd:48:4b:2c:9b:20:b7:82:10:5d:77:ca:77:20:9c:39:94:bb:
         3a:9f:05:0a:54:66:62:f2:3a:c0:3a:1a:83:6b:78:11:d6:ee:
         f1:b7:78:59

 



第二步:发证

1)用到证书的主机2生成证书请求:

#(umask 077; opensslgenrsa -out /etc/httpd/ssl/httpd.key 2048)

#openssl req -new -key/etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr

2)把请求文件传输给CA主机

#scp _IP:/tmp/

3)CA 签证,并发还给主机2

#openssl ca -in/tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365

#scp/etc/pki/CA/certs/httpd.crt _IP:/etc/httpd/ssl/

查看证书中的信息:

#openssl x509 -in/PATN/FROM/CERT_FILE -noout -text |-subject |-serial

第三步:吊销证书

1)客户端获取要吊销的证书serial

#openssl x509 -in/PATN/FROM/CERT_FILE -noout -serial

 

[ ~]# openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -serial
serial=01
[ ~]# openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -subject
subject= /C=cn/ST=hubei/O=longjingcun/OU=OP\x08ps/CN=lanli\x08\x08in/emailAddress=lani\

 

2)CA

先根据客户提交的serial和subject信息,对比检验是否与index.txt 文件中的信息一致。

吊销证书:

#openssl ca -revoke/etc/pki/CA/newcerts/SERIAL.pem

 

 

3)生成吊销证书的编号(第一次吊销一个证书)

#echo 01 >/etc/pki/CA/crlnumber

 

 

4)更新证书吊销列表

#openssl ca -gencrl -out thiscrl.crl

 

查看吊销证书

#openssl crl -in/PATH/FROM/CRL_FILE.crl -noout -text

 

 

3、搭建一套DNS服务器,负责解析magedu.com域名(自行设定主机名及IP)

(1)、能够对一些主机名进行正向解析和逆向解析;

(2)、对子域cdn.magedu.com进行子域授权,子域负责解析对应子域中的主机名;

(3)、为了保证DNS服务系统的高可用性,请设计一套方案,并写出详细的实施过程

~]#  yum install bind
~]# yum install bind-utils   用于dns测试使用
~]# setenforce 0
~]# service iptables stop
~]# vim /etc/named.conf  
 listen-on port 53 { any;};  修改为any;表示监听所有地址的53端口
  //      listen-on-v6 port 53 { ::1; };   注释掉了IPV6的监听功能
 allow-query  { any; };  修改为any;表示允许所有主机进行dns查询
 recursion yes;  默认yes不改动,表示是否允许递归
 dnssec-enable no;   改为no; 
 dnssec-validation no; 改为no;

 

保存退出

 service named start    
启动服务

 

至此,dns缓存服务配置成功。

配置区域解析文件:

# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
        type master;
        file "magedu.com.zone";
        allow-update { none;};表示不允许任何主机更新解析文件,安装考虑
};

 

保存退出

]# vim /var/named/magedu.com.zone
service named restart 
 
重启服务

创建反向解析文件:

]# vim /etc/named.rfc1912.zones 
zone "168.192.in-addr.arpa" IN {
         type master;
         file "192.168.zone";
};
]# vim 192.168.zone
 
]# service named restart

 

进行子域授权;

首先在父域dns服务器上添加子域dns服务器的区域解析

 添加一条子域dns的NS记录和A记录。我的子域dns服务器IP为192.168.1.110

然后子域节点安装bind程序包,配置主配置文件首先成为dns缓存服务器,配置和父域节点一样。

再在子域中添加区域解析文件

# vim /etc/named.rfc1912.zones
zone "cdn.magedu.com" IN {
        type master;
        file "cdn.magedu.com.zone";
        allow-update { none; };
};

 

保存退出后启动dns服务,
]# service named start

在父域节点上,可以查询自己域的记录也可以查询子域记录

完成子域授权操作。

高可用性,dns的服务器可以是一个主服务多个从服务器。每当主服务器发生解析文件变更时,会主动通知从节点,从而把变更后的解析库文件传递给从服务器。当有一台dns服务器不能提供服务时,可暂时由另外一台dns服务器提供服务。从而实现了高可用性。

Dns主节点的配置就是在/etc/named.rfc1912.zones文件中定义解析区域时, 保证type master;即可。还有一点,主节点的区域解析文件中要有从节点的NS记录和A记录。

ns从节点的配置首先是定义区域

]# vim /etc/named.rfc1912.zones 
zone "magedu.com" IN {区域名称必须和主节点一致
        type slave;类型为从节点
        masters { 192.168.1.111; };   给定主节点的IP地址
        file "slaves/magedu.com.zone";区域解析文件的保存位置在slaves文件夹下
};

 

还有一点就是要保证主从节点的时间同步,和保证主从节点的通信。

两边重启服务后,查看日志信息就能看到是否成功。

主节点发送了通知

dns主从同步实现。

 

 

 

4、请描述一次完整的http请求处理过程;

大致分为两个请求过程:请求连接和请求数据

    1)   域名解析,client与server三次握手,建立连接

    2)   建立TCP连接后发起http请求

    3)   服务器响应http请求,进行业务逻辑分析,server寻找client请求的页面并处理,将对应的数据响应给client浏览器得到html代码

    4)   浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)

    5)   浏览器对页面进行渲染呈现给用户

    6)   短连接即可断开连接,也有另一种长连接方式,会保持连接一段时间。

 

5、httpd所支持的处理模型有哪些,他们的分别使用于哪些环境。

1)prefork模型

2)worker模型

3)event模型

prefork
模型:多进程模型,每个进程响应一个请求;一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达;子进程数最大不会超过1024个。

技术分享

 
worker
模型:多线程模型,每个线程响应一个请求;一个主进程:生成多个子进程,每个子进程负责生成多个线程,每个线程响应一个请求。m进程,n线程:最大的并发响应数是m*n。

技术分享

event
模型:事件驱动模型,每个线程响应n个请求;一个主进程:生成m个子进程,每个进程直接响应n个请求;最大并发响应数是m*n。

 

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服务器:

1.准备相应版本的安装包:

#安装编译环境包组:Development Tools , Desktop Platform Development
#查看包组:yumgrouplist
#安装包组:yumgroupinstall Development Tools 
#yum groupinstall Desktop Platform Development
#apr和apr-util应在1.4版本以上
#pcre安装包
#httpd2.4.x

2.解压apr并安装

 

 

tar xf apr-1.4.6.tar.gz
# cd apr-1.4.6
# ./configure --prefix=/usr/local/apr
# make && make install

 

3.解压apr-util并安装

 

 

tar xf apr-util-1.4.1.tar.gz 
# cd apr-util-1.4.1
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make && make install

 

4.解压pcre并安装

 

tar xf pcre-8.20.tar.bz2 
# cd pcre-8.20
# ./configure --prefix=/usr/local/pcre
# make && make install

 

 

5.解压httpd24并安装

 

tar xf httpd-2.4.3.tar.gz 
# cd httpd-2.4.3
#./configure --prefix=/usr/local/apache --sysconf=/etc/httpd24  --enable-so
--enable-ssl --enable-cgi --enable-rewrite --with-zlib
--with-prce=/usr/local/pcre  --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
# make && make install

 

 

a)编辑配置文件/etc/httpd/httpd.conf

 

 # Virtual hosts
Include /etc/httpd/conf.d/*.conf          
[ ~]# vim /etc/httpd/conf.d/stuX.com.conf        #配置www1.stuX.com
<VirtualHost 10.18.11.30:80>        #虚拟主机监听地址
  ServerName www1.stuX.com        #虚拟主机域名
  DocumentRoot /vhosts/www1.stuX.com        #网站根目录
  CustomLog /var/log/httpd/www1.access combined    #配置访问日志路径
  ErrorLog "/var/log/httpd/www1.err"        #配置错误日志路径
  <Directory "/vhosts/www1.stuX.com">        #允许所有访问请求/vhosts/www1.stuX.com
      <RequireAll>    
        Require all granted
    </RequireAll>
  </Directory>
</VirtualHost>
<VirtualHost 10.18.11.30:80>        #配置www2.stuX.com
  ServerName www2.stuX.com    
  DocumentRoot /vhosts/www2.stuX.com
  CustomLog /var/log/httpd/www2.access combined
  ErrorLog "/var/log/httpd/www2.err"
  <Directory "/vhosts/www2.stuX.com">
      <RequireAll>
        Require all granted
    </RequireAll>
  </Directory>
</VirtualHost>

 

[ httpd]# echo www1.stuX.com > /vhosts/www1.stuX.com/index.html        #生成主页文件

 

[ httpd]# echo www2.stuX.com > /vhosts/www2.stuX.com/index.html
[ conf.d]# cp /etc/httpd/extra/httpd-info.conf ../conf.d/

 

[ conf.d]# vim /etc/httpd/conf.d/httpd-info.conf    #修改其中server-status配置
<Location /server-status>
    SetHandler server-status
    Authtype   Basic        #设置认证类型
    Authname   "status"    #定义受保护的领域名称,在浏览器访问的时候会显示
    AuthUserFile /etc/httpd/conf.d/.htpasswd        #要求只有认证文件中的合法用户才能访问
    Require valid-user        #valid-user表示所有合法用户,若只授权给单个用户,则改为指定的用户名
</Location>
[ conf.d]# htpasswd -c -m /etc/httpd/conf.d/.htpasswd status    #创建用户认证的数据库文件

 

 

7、为第6题中的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;

(1)要求使用证书认证,证书中要求使用的国家(CN)、州(HA)、城市(ZZ)和组织(MageEdu);

(2)设置部门为Ops,主机名为www2.stuX.com,邮件为admin@stuX.com

  1、生成一个自签署证书

 

[ 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 []:



2、需要使用证书的主机上生成CA请求.

 

[ 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) []: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 []:
 
Please enter the following ‘extra‘ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[ ssl]# scp httpd.csr :/tmp        #将请求文件传输给CA所在主机



3、CA签署证书

[ CA]# openssl ca -in /tmp/httpd.csr -out certs/www2.stuX.com.crt -days 3650
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 2 (0x2)
        Validity
            Not Before: Oct 21 14:10:05 2016 GMT
            Not After : Oct 19 14:10:05 2026 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = HA
            organizationName          = MageEdu
            organizationalUnitName    = Ops
            commonName                = www2.stuX.com
            emailAddress              = 
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                16:5A:7B:84:A7:5F:7D:EA:CC:0D:1D:CB:5F:D3:A0:AD:29:20:98:63
            X509v3 Authority Key Identifier: 
                keyid:C7:83:51:96:AC:82:AF:DA:35:58:02:CD:B3:75:B2:37:B8:5D:59:38
 
Certificate is to be certified until Oct 19 14:10:05 2026 GMT (3650 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]# scp certs/www2.stuX.com.crt 10.18.11.30:/etc/httpd/ssl/        #将证书文件传到httpd服务中



4、添加httpd中ssl配置

 

[ conf.d]# vim /etc/httpd/conf.d/httpd_ssl.conf         #编辑ssl配置文件
LoadModule ssl_module modules/mod_ssl.so        #添加需要加载的模块
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
ServerName www2.stuX.com
DocumentRoot "/vhosts/www2.stuX.com"
<Directory "/vhosts/www2.stuX.com">
    <RequireAll>
        Require all granted
    </RequireAll>
</Directory>
SSLCertificateFile "/etc/httpd/ssl/www2.stuX.com.crt"        #定义证书文件路径
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key        #定义证书文件私钥

 



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网络的主机访问;

 

[ /]# groupadd develop        
[ /]# useradd -G develop gentoo       
[ /]# useradd -G develop centos
[ /]# useradd ubuntu
 
[ /]# echo gentoo | passwd --stdin gentoo        
[ /]# echo centos | passwd --stdin centos
[ /]# echo ubuntu | passwd --stdin ubuntu
 
 
[ /]# smbpasswd -a gentoo        
[ /]# smbpasswd -a centos
[ /]# smbpasswd -a ubuntu
 
[ /]# vim /etc/samba/smb.conf         
        hosts allow = 172.16.0.0/16       
         
[share]
        comment = share
        path = /share        
        public = no       
        writable = yes           
        write list = +develop      
         
[ ~]# smbclient //172.16.1.123/share -U centos       
Enter centos‘s password: 
Domain=[MYGROUP] OS=[Windows 6.1] Server=[Samba 4.2.10]
smb: \> ls
  .                                   D        0  Sat Oct 22 17:20:02 2016
  ..                                 DR        0  Sat Oct 22 17:20:02 2016
 
                77931220 blocks of size 1024. 71904540 blocks available
smb: \> lcd /etc
smb: \> put passwd
putting file passwd as \passwd (946.6 kb/s) (average 946.6 kb/s)    
 
[ ~]# smbclient //172.16.1.123/share -U ubuntu       
Enter ubuntu‘s password: 
Domain=[MYGROUP] OS=[Windows 6.1] Server=[Samba 4.2.10]
smb: \> lcd 
smb: \> lcd /etc
smb: \> put fstab 
NT_STATUS_ACCESS_DENIED opening remote file \fstab

 

9、搭建一套文件vsftp文件共享服务,共享目录为/ftproot,要求:(描述完整的过程)

1)基于虚拟用户的访问形式;

2)匿名用户只允许下载,不允许上传;

3)禁锢所有的用户于其家目录当中;

4)限制最大并发连接数为200:;

5)匿名用户的最大传输速率512KB/s

6)虚拟用户的账号存储在mysql数据库当中。

7)数据库通过NFS进行共享。

【linux基础】第九周作业

标签:测试   win   httpd   代码   default   slave   lib   src   tab   

原文地址:http://www.cnblogs.com/qixoo/p/6049557.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!