关于超想
本站导航
邮件列表
  首页 | 本站产品 | Delphi资料 | 免费资源 | 程序人生 | 软件工程 | 网站设计 | 推荐网站
你所在的位置 -> 主页 -> 超想软件 -> 通信网络 -> 服务器软件 ->详细
相关内容  
 
 
apache+mysql+php+ssl服务器之完全安装攻略
CGI 安全问题
FTP的安全问题
Linux构建网站案例
 
【新品推荐】

  详细内容
 

中小企业服务器配置-Web服务器
作者: 评价: 上站日期: 06-13-2002
内容说明:
来源:

     第一节 Apache服务器
  & 1.1 简介
  Apache是世界排名第一的Web服务器,根据著名的Web服务器调查公司Netcraft的调查,世界上百分之五十以上的Web服务器都在使用Apache。
      纵观Apache,它为我们的网络管理员提供了丰富多彩的功能,包括目录索引、目录别名、内容协商、可配置的HTTP错误报告、CGI程序的SetUID执行、子进程资源管理、服务器端图象映射、重写URL、URL拼写检查以及联机手册man等。也就是说,如果您在Linux Server上成功安装配置了Apache之后,您的计算机也将随着Apache的生效而摇身一变,成为一台名副其实的Web Server,这种变化的确是激动人心的。伴随着自由软件发展的强大动力,我们有理由相信Apache的未来是一片光明的。
      在Internet时代,外部主页的发布已经成为树立公司形象的一个重要手段,而内部主页也成为公司管理的主要方式。但是,要想实现这些功能,首先应该把我们的Linux Server配置成为一台强大的Web Server。时至今日,全球应用最广泛的Web服务器软件就是Apache,本章将详细介绍如何配置Apache服务器。希望各位同仁能够通过阅读本片文章达到理论实践双丰收的目的,在很短的时间里迅速成为一名出色的网络管理员。

  & 1.2 所需资源
   &1.2.1 所需包

        RedHat6.2 服务器安装

     &1.2.2 所需配置文件
   
/etc/httpd/conf/httpd.conf      系统自带,管理员配置
   /etc/httpd/conf/access.conf     系统自带,不需要修改
   /etc/httpd/conf/srm.conf        系统自带,不需要修改

  & 1.3  配置方案
 1./etc/httpd/conf/httpd.conf
         
说明:apache主配置文件
         源文件:
         ServerType standalone
         
#定义WebServer的启动方式为standalone,以增强其对大量访问
           的及时响应性
ServerRoot "/etc/httpd"
         
#指定包含httpd服务器文件的目录
LockFile /var/lock/httpd.lock
PidFile /var/run/httpd.pid
ScoreBoardFile /var/run/httpd.scoreboard
Timeout 300
         
#响应超时量,单位为秒
KeepAlive On
         
#允许用户建立永久连接
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 5
         
#要保留的空闲服务器进程的最小值
MaxSpareServers 20
         
#要保留的空闲服务器进程的最大值
StartServers 8

         #系统启动时的守护进程数
MaxClients 150
         
#所能提供服务的最大客户端编号,大于它的部分被放入请求队列
MaxRequestsPerChild 100
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule env_module         modules/mod_env.so
LoadModule config_log_module  modules/mod_log_config.so
LoadModule agent_log_module   modules/mod_log_agent.so
LoadModule referer_log_module modules/mod_log_referer.so
LoadModule mime_module        modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule status_module      modules/mod_status.so
LoadModule info_module        modules/mod_info.so
LoadModule includes_module    modules/mod_include.so
LoadModule autoindex_module   modules/mod_autoindex.so
LoadModule dir_module         modules/mod_dir.so
LoadModule cgi_module         modules/mod_cgi.so
LoadModule asis_module        modules/mod_asis.so
LoadModule imap_module        modules/mod_imap.so
LoadModule action_module      modules/mod_actions.so
LoadModule userdir_module     modules/mod_userdir.so
LoadModule alias_module       modules/mod_alias.so
LoadModule rewrite_module     modules/mod_rewrite.so
LoadModule access_module      modules/mod_access.so
LoadModule auth_module        modules/mod_auth.so
LoadModule anon_auth_module   modules/mod_auth_anon.so
LoadModule db_auth_module     modules/mod_auth_db.so
LoadModule digest_module      modules/mod_digest.so
LoadModule proxy_module       modules/libproxy.so
LoadModule expires_module     modules/mod_expires.so
LoadModule headers_module     modules/mod_headers.so
LoadModule usertrack_module   modules/mod_usertrack.so
LoadModule setenvif_module    modules/mod_setenvif.so
LoadModule perl_module        modules/libperl.so
LoadModule php3_module        modules/libphp3.so
ClearModuleList
AddModule mod_vhost_alias.c
AddModule mod_env.c
AddModule mod_log_config.c
AddModule mod_log_agent.c
AddModule mod_log_referer.c
AddModule mod_mime.c
AddModule mod_negotiation.c
AddModule mod_status.c
AddModule mod_info.c
AddModule mod_include.c
AddModule mod_autoindex.c
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_asis.c
AddModule mod_imap.c
AddModule mod_actions.c
#AddModule mod_speling.c
AddModule mod_userdir.c
AddModule mod_alias.c
AddModule mod_rewrite.c
AddModule mod_access.c
AddModule mod_auth.c
AddModule mod_auth_anon.c
AddModule mod_auth_db.c
AddModule mod_digest.c
AddModule mod_proxy.c
AddModule mod_expires.c
AddModule mod_headers.c
AddModule mod_usertrack.c
AddModule mod_so.c
AddModule mod_setenvif.c
AddModule mod_perl.c
AddModule mod_php3.c
Port 80
         
#定义服务器所使用的TCP的端口号
User nobody
Group nobody

         #以上两行是分配给httpd的新用户的文件权限,出于安全的考虑把
           它们的权限设置成为最低。
ServerAdmin root@weboa.com.cn
         
#设置Web管理员的邮件地址
ServerName WebOA 
         
#定义客户端从服务器读取数据时返回给客户端的主机名,其缺省值
           是localhost,第一次安装Linux的时候经常这里出错。
DocumentRoot "/home/weboa/jakarta-tomcat/webapps/weboa"
         
#设置所有Apache文档的根目录,比如说,用户对            
            http://www.weboa.com.cn/index.html的访问请求,Apache对它            
          的响应是/home/weboa/jakarta-tomcat/webapps/weboa/index.html

    Options FollowSymLinks
    AllowOverride None


    Options Indexes Includes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all               # 允许所有人访问

UserDir public_html
DirectoryIndex index.html index.htm index.shtml index.cgi
         
#设置多种成功访问主页的方式,为的是提高系统的容错性
AccessFileName .htaccess

    Order allow,deny
    Deny from all

UseCanonicalName On
TypesConfig /etc/mime.types
DefaultType text/plain

    MIMEMagicFile share/magic

HostnameLookups Off
ErrorLog /usr/httpd/log/error_log
LogLevel warn
         
#定义那些错误类型被记录到错误日志中
LogFormat "%h %l %u %t ($%$43%^#ASD#2@$#f$%^)%r($%$43%^#ASD#2@$#f$%^) %> s %b ($%$43%^#ASD#2@$#f$%^)%{Referer}i($%$43%^#ASD#2@$#f$%^) ($%$43%^#ASD#2@$#f$%^)%{User-Agent}i($%$43%^#ASD#2@$#f$%^)" combined
         
#所有的LogFormat都用来定义日志中的条目
LogFormat "%h %l %u %t ($%$43%^#ASD#2@$#f$%^)%r($%$43%^#ASD#2@$#f$%^) %> s %b" common
LogFormat "%{Referer}i ->  %U" referer
LogFormat "%{User-agent}i" agent
CustomLog /usr/httpd/log/access_log common
ServerSignature On
Alias /icons/ "/home/httpd/icons/"
#定义虚拟主机目录与系统目录的对应关系

    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all

ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/"

#定义CGI目录

    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all

IndexOptions FancyIndexing
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
DefaultIcon /icons/unknown.gif
ReadmeName README
HeaderName HEADER
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
AddLanguage en .en
AddLanguage fr .fr
AddLanguage de .de
AddLanguage da .da
AddLanguage el .el
AddLanguage it .it
LanguagePriority en fr de

  AddType application/x-httpd-php3 .php3
  AddType application/x-httpd-php3-source .phps


  AddType application/x-httpd-php .phtml

AddType application/x-tar .tgz
AddType text/html .shtml
AddHandler server-parsed .shtml
AddHandler imap-file map
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

  Alias /perl/ /home/httpd/perl/
  
    SetHandler perl-script
PerlHandler Apache::Registry
    Options +ExecCGI
  

Alias /doc/ /usr/doc/

  order deny,allow
  deny from all
  allow from localhost
  Options Indexes FollowSymLinks

include /etc/httpd/conf/tomcat-apache.conf
Alias /netcard "/home/weboa/jakarta-tomcat/webapps/weboa/net_card"

    Options Indexes FollowSymLinks
    allow from all

CacheSize  5

#定义缓存区大小,以KB为单位。可以根据需要和硬盘空间大小进行设置
CacheGcInterval  4

#每隔4小时检查缓存区,如果已经超过CacheSize就删除文件
CacheMaxExpire  24

#HTTP文件最多被保持24小时
CacheLastModifiedFactor  0.1

#定义HTTP文件失效期,缺省是0.1 ,意思是说失效期=离最近一次修改的时间X,比如离最近一次修改的时间是5小时,那么失效期就是5X0.1=0.5小时
CacheDefaultExpire 1

#这一指令提供一个缺省的时间(小时)来销毁缓存的文件,这些文件的最后更改时间不详。CacheMaxExpire  命令不覆盖这一设置

###    以下是为Apache增加SSL安全认证的方法              ##

##    以下是如何对一个目录进行登陆控制的方法      ## 

 1.在/etc/httpd/conf/httpd.conf中添加以下内容:

Alias /weboa/ "/home/weboa/"

    Options Indexes MultiViews
    AllowOverride authconfig
    Order allow,deny
    Allow from all


 2.在/home/weboa目录下建立.htaccess文件
            
authname "shared files" 
            authtype basic 
            authuserfile /etc/httpd/conf/passwd 
   require valid-user

 3.在/etc/httpd/conf目录下执行命令生成认证文件
  
htpasswd –c thj thj #创建认证文件和第一个名和密码
  htpasswd weboa weboa  #添加其他用户名和密码


###    以下是做虚拟主机的实现方法    ###
         
需要在/etc/httpd/conf/httpd.conf中添加下列内容:

Alias /webadmin/ "/home/weboa/webadmin/html/"

    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all

NameVirtualHost 192.168.0.1            #虚拟域名的DNS服务器
ServerAdmin root@weboa.com.cn            #网管邮件地址
DocumentRoot /home/weboa/webadmin/html/ #服务器页面目录
ServerName webadmin.weboa.com.cn        #服务器名称

需要在/var/named/name2ip.conf中添加的内容:
webadmin      IN     A     192.168.0.1

  & 1.4 测试及管理办法
   &1.4.1 测试方法
       
1.每当管理员更改了Apache的设置之后,都应执行
 /etc/rc.d/init.d/httpd restart使得更改生效。

     &1.4.2 管理方法
1.Apache提供大量的日志文件,当Apache出错的时候,管理员可以
   根据htppd.conf中的ErrorLog定义的路径来诊断。具体方法是:tail 
   –f /var/log/httpd/apache/error_log

  & 1.5 小 结
   Web服务是Internet服务器最基本的服务,Linux发行版中包含的Apache软件是性能优良的Web服务器,也是Internet上最流行的Web服务器,由于它时刻都经历着无数使用者的测试,所以现行的Apache的默认选项已经是十分适合我们大家的了,你只需要更改其中几个与当前应用环境紧密相关的选项就可以达到你的目的了。
   第二节 Tomcat服务器
  & 2.1 简介
  Jsp是sun在servlet基础上发展而来的一种新的web开发工具,在国外Ejb+jsp/servlet+应用服务器+数 据库已经已经成为电子商务站点的流行架构。tomcat3.1实现了最新的servlet2.2和jsp1.1标准,sun也 是推荐使用tomcat,本文介绍tomcat3.1在RedHat下的安装。

  & 2.2 所需资源
     &2.2.1 所需包

1.    jdk1_2_2-linux-i386.tar.gz  
   http://java.sun.com
     2. jakarta-tomcat.tar.gz,   
        http://jakarta.apache.org/builds/tomcat/release/v3.1/bin/
3.    mod_jserv.so 
         http://jakarta.apache.org/builds/tomcat/release/v3.1/bin/linux/i386/
  
   &2.2.2 所需配置文件
      
/etc/profile
      /usr/local/jakarta-tomcat/conf/server.xml
      /usr/local/jakarta-tomcat/conf/tomcat.properties

  & 2.3 安装步骤
 1.    安装JDK

cd /usr/local
tar zxvf /root/jdk1_2_2-linux-i386.tar.gz
mv jdk1.2.2 jdk

 2.    修改/etc/profile环境文件

添加以下内容:
JAVA_HOME=/usr/local/jdk 
CLASSPATH=/usr/local/jdk/lib:/usr/local/jre/lib  
PATH=$PAHT:/usr/local/jdk/bin:/usr/local/jre/bin
     export JAVA_HOME
     export CLASSPATH

 3.    安装Tomcat

cd /usr/local
tar zxvf /root/jakarta-tomcat.tar.gz

 4.    整和Apache和Tomcat

cd /home/httpd
mkdir libexec
cp /root/mod_jserv.so /home/httpd/libexec
cp /usr/local/jakarta-tomcat/conf/tomcat.conf /etc/httpd/conf
vi /etc/httpd/conf/httpd.conf
在文件末尾添加以下内容:
Include /etc/httpd/conf/tomcat-apache.conf


  & 2.3 配置和管理TOMCAT
   1.    /usr/local/jakarta-tomcat/conf/server.xml

  & 2.4 测试及管理办法
     &2.4.1 测试方法
    
 1.在服务器上任意目录下键入java,看看有没有执行
              2.浏览http://192.168.0.1:8080看看有没有那只可爱的小猫就成拉!!
     3.浏览http://192.168.0.1/examples/jsp/index.html来测试Apache和Tomcat是否成功整和。

  & 2.5 其他参考资料
              1. 关于tomcat的信息请到http://jakarta.apache.org 
 2. 其他jsp方面的信息可以到http://java.sun.com/jsp

  & 2.6 小 结
Tomcat和Jserv之间的区别是什么? Tomcat==Jserv,不是吗?
这是一种普通的误解。Jserv是被建立为与阿帕奇一起使用的Servlet API 2.0兼容的容器。 Tomcat是完全重写并且兼容Servlet API 2.2和JSP 1.1的一种容器。 
Tomcat使用了一些Jserv的代码,尤其是Jserv的阿帕奇服务器适配器(adapter), 但是相似的地方仅此而已。



    第三节  Apache+Jserv整和
  一、需要的源码包:
jdk-1_2_2_006-linux-i386.tar.gz
jsdk20-solaris2-sparc[1].tar.Z
ApacheJServ-1.1.2.tar.gz

  二、安装过程
 1、安装jdk1.2.2

(1)    解开压缩包
    tar xvzf jdk1_2_2_006-linux-i386.tar.gz
(2) 目录的处理
        ln -s jdk1.2.2 jdk
        ln -s jdk/jre jre
    (3) 设置$JAVA_HOME,$CLASSPATH
        vi /root/.bash_profile
        加入:
             JAVA_HOME=/usr/local/jdk
             export JAVA_HOME
             CLASSPATH=/usr/local/jdk/lib:/usr/local/jre/lib
  export CLASSPATH
             PATH=$PATH:/usr/local/jdk/bin:/usr/local/jre/bin
    注:JDK的安装到此结束。

 2.安装JSDK
(1) tar zxvf jsdk20-solaris2-sparc[1].tar.Z
      (2) 将产生的JSDK2.0目录移到 /usr/local/JSDK2.0
          mv JSDK2.0 /usr/local/JSDK2.0
    注:JSDK的安装到此结束。

 3.Apache和Jserv的静态混合编译
所谓的静态编译是指将Jserv编译进apache里
     
 (1) tar xvzf apache_1.3.12.tar.gz
         tar xvzf ApacheJServ-1.1.2.tar.gz
      (2) cd apache_1.3.12
         ./configure --prefix=/usr/local/apache
      (3) 配置apache jserv编译参数
         cd ../ApacheJServ-1.1.2
         ./configure \
             --prefix=/usr/local/jserv \
         --with-apache-src=../apache_1.3.12 \
         --with-jdk-home=/usr/local/ jdk1.2.2 \
         --with-java-platform=2 \
         --with-JSDK=/usr/local/JSDK2.0/lib/jsdk.jar
         make
         make install
      (4) 编译apache和apache jserv
         cd ../apache_1.3.12
         ./configure \ 
                      --prefix=/usr/local/apache \
                      --activate-module=src/modules/jserv/libjserv.a
         make
         make install
 (5) 执行/usr/local/apache/bin/httpd -l检查一下mod_jserv是否编译进apache了
               (6) 更改配置文件 /usr/local/apache/conf/httpd.conf
   添加 Include /usr/local/jserv/etc/jserv.conf
      (7) 更改配置文件 /usr/local/jserv/etc/jserv.conf
         SetHandler jserv-status
order deny,allow
deny from all
加入你的信任主机allow from xxxx
这样在信任主机上通过http://yourserver/jserv/(注意后面这个"/"不能少)可以看到你的apache jserv的配置信息。
接着在/usr/local/jserv/servlets下放入你自己的servlet class实验一下效果吧,测试结果表明在redhat6.2下没有中文显示问题,一切ok!
其他关于servlet zone的设置、load balance等等请参考apache jserv文档和java.apache.org网站
   注:Apache和Jserv混合编译到此结束

  三、最后的测试:
 1.启动apache:/usr/local/apache/bin/apachectl start
 2.用浏览器测试http://yourserver/servlets/IsItWorking        看见了Yes,It's working!了吗?你成功了!!



    第四节    Linux下Apache、php3、MySQL的整合
  一、所需的安装包 
apache_1.3.19.tar.gz 
    php-4.0.4.tar.gz 
    mysql-3.23.32.tar.gz 
    注意:以上均为源代码而非RPM包 

  二、软件安装 
 1.    安装MySQL 
  (1) 解开压缩包

  cd /usr/local
       tar -zvxf mysql-3.23.32.tar.gz 

  (2) 将产生mysql-3.23.32目录移到/usr/local/mysql
        
  mv mysql-3.23.32 /usr/local/mysql 
    
  (3) 编译MySQL
        
cd /usr/local/mysql 
        ./configure --prefix=/usr/local/mysql 
        make
        make install

  (4) 安装数据库文件
    
/usr/local/mysql/scripts/mysql_install_db
    /usr/local/mysql/bin/safe_mysqld &

  (5) MySQL授权操作
    
MySQL的存取控制技术功能强大,比Postgres更加具有灵活性。MySQL采用的用户名和密码的加密算法与Unix系统不尽相同,其用户名可以长达16个字符。
先以root登陆MySQl,然后在MySQL的提示符下键入grant all privileges  on *.* to thj@localhost identified by ‘thj’ with grant option;  这样,无论用户thj从什么地方登陆到这台服务器都可以使用MySQL。

  (6) MySQL数据库简单操作语句
        
创建数据库
               命令:create database 数据库名;
       删除数据库
               命令:drop database 数据库名;
       查询MySQL中都有什么数据库
               命令:show databases;
       更改当前使用的数据库
               命令:use tbl_name
       创建数据表
               命令:create table tbl_name ( column_specs );
               说明:tbl_name 数据表名   column_specs 表中列的说明
       查询指定的数据表的结构
               命令:describe tbl_name;
       查询数据库中都有什么数据表
               命令:show tables;
       增加新记录
 命令:insert into tbl_name (col_name1,col_name2,…) values(values1,values2,….)
说明:insert语句简单易用,但是它也有一个缺陷,就是每次只能插入一条记录。
       批量装载数据
命令:load data local infile “filename.txt” into table tbl_name;
说明:MySQl的版本不得低于3.22.15,否则load data local不起作用。该语句实际上是调用了/usr/bin/mysqlimport。
       检索信息
命令:select 要选择的东西 from 一个或多个表 where 数据必须满足的条件
注:在MySQL中,每键入一条命令之后,在命令行的结尾都要敲入“;”,标志是一条命令,或者敲回车之后再敲go,提示系统执行上边的命令;另外,在多数关于MySQL的参考书中,命令都为大写,实际上小写也可以;还有,use语句可以不加“;”,这是所有MySQL语言中唯一一个不需要加“;”就可以执行的语句。
注:MySQL的安装到此结束
 2.    Apache、PHP3的混合编译 
  (1) 解开压缩包

cd /usr/local
        tar xvzf apache_1.3.19.tar.gz
        tar xvzf php-4.0.4.tar.gz
        mv apache_1.3.19.tar.gz apache
        mv php-4.0.4.tar.gz php
     
  (2) 把Apache的安装目录定为/usr/local/apache 
         
cd apache
         ./configure --prefix=/usr/local/apache --with-port=8000
     
  (3) 配置支持MySQL、作为Apache功能模块、跟踪变量有效 
         
cd ../php
./configure --with-mysql=/usr/local/mysql --with-     apache=../apache --enable-track-vars –with-pgsql=/usr/lib/pgsql --prefix=/usr/local/apache/php –with-config-file-path=/usr/local/apache/php
       make
         make install 
注:PHP的安装到此结束
      
  (4) 配置Apache,加入PHP4的模块

cd ../apache
          cp /usr/local/php/libs/libphp4.a \
             /usr/local/apache/src/modules/php4
./configure --prefix=/usr/local/apache --activate- module=src/modules/php4/libphp4.a --with-port=8000
make
make install 
注:APACHE安装完毕 

 3.更改配置
  (1) 把php.ini文件拷到/usr/local/apache/php目录下. 
       
cd ../php
       cp php.ini-dist /usr/local/apache/php/php4.ini
   
  (2) 更改Apache的配置文件
       
cd /usr/local/apache/conf 
       vi httpd.conf 
找到 AddType application/x-httpd-php .php4 把它前头的#号给删了当然也可加一行 AddType application/x-httpd-php3.asp 这样用FrontPage编辑会方便一点。
         最后运行/usr/local/apache/bin/apachectl start启动apache进程。


    第五节 为Apache增加SSL安全保护
  & 5.1 简介
   Netscape公司提出的安全套接层(Secure Sockets Layer)的概念,简称SSL。顾名思义,这是一个建立在Socket层的安全协议,它屏蔽了高层协议如telnet、ftp、http的区别,把安全建立在了传输之上。目前该协议以被广泛采纳,它所定义的很多功能都成了下一代IP协议IPV6的一部分。

  & 5.2 所需资源

     &1.2.1 所需包
     
 1. Apache 1.3.19.tar.gz 
       
下载网址:  
          http://www.tux.org/pub/net/apache/dist/apache_1.3.17.tar.gz 
     
 2. openssl 0.9.6 要用他来生成密钥和签署证书 
        
下载网址:
          http://www.openssl.org/source/openssl-0.9.6.tar.gz 
     
 3. mod_ssl 2.8.0 
         
下载网址:
          http://www.modssl.org/source/mod_ssl-2.8.0-1.3.19.tar.gz 

     &1.2.2 安装过程

 1. 编译 OpenSSL: 

cd /usr/local
tar zxvf openssl-0.9.6.tar.gz
cd /usr/local/openssl-0.9.6 
./config --prefix=/usr/local/openssl 
#注意,这里是 config 而不是 configure。 
make 
make test 
make install 

 2. 编译MOD_SSL 

cd /usr/local
tar zxvf mod_ssl-2.8.0-1.3.19
cd /usr/local/mod_ssl-2.8.0-1.3.19 
./configure --with-apache=../apache_1.3.19

 3. 编译apache

cd /usr/local
tar zxvf apache_1.3.19
cd /usr/local/apache_1.3.19
SSL_BASE=../openssl-0.9.6 \ 
./configure --prefix=/usr/local/apache_1.3.19 \ 
--enable-module=ssl \ 
--enable-shared=ssl 
make 


 4.生成CA

make certificate TYPE=custom 
说明:这一步要生成你自己的 CA (如果你不知道,我也不能细说了,简单地说就是认证中心),和用它来为你的服务器签署证书。 
STEP 0: 
选择算法,使用缺省的 RSA 

STEP 1: 
生成 ca.key,CA的私人密钥 

STEP 2: 
为CA生成X.509的认证请求 ca.csr 
要输入一些信息: 
Country Name: cn 国家代码,两个字母 
State or Provice name: An Hui 省份 
Locality Name: Bengbu 城市名 
Organization Name: Home CA 组织名,随便写吧 
Organization Unit Name: Mine CA 
Common Name: Mine CA 
Email Address: sunstorm@263.net 我的Email 
Certificate Validity: 4096 四千多天,够了吧 

STEP 3: 
生成CA的签名,ca.crt 

STEP 4: 
生成服务器的私人密钥,server.key 

STEP 5: 
生成服务器的认证请求,server.csr 
要输入一些信息,和STEP 2类似, 
不过注意 Common Name是你的网站域名,如 www.mydomain.com 
Certificate Validity不要太大,365就可以了。 

STEP 6: 
为你的服务器签名,得到server.crt 

STEP 7-8:
为你的 ca.key 和 server.key 加密,要记住pass phrase。 
下面完成apache的安装 
make install 
vi /usr/local/apache/conf/httpd.conf 
修改BindAddress 和 ServerName 
如果要改变 DocumentRoot 要记得把httpd.conf里SSL Virtual Host Context部分的DocumentRoot设定也改掉。 
SSLCertificateFile和SSLCertificatKeyFile的设定也在SSL Virtual Host Context部分。 
它可能是这样设定的:
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt 
SSLCertificateKeyFile /usr/local/apache_1.3.19/conf/ssl.key/server.key 
  要注意ssl.key ssl.crt等目录和文件的权限! 
  所有的key,csr,crt,prm文件都应该设为 400 属性! 
  & 5.3 手工签署证书
  虽然在安装MOD_SSL时已经使用 make certificate 命令建立了服务器的证书签名,但是有时你可能需要改变它。 

  当然有很多自动的脚本可以实现它,但是最可靠的方法是手工签署证书。首先我假定你已经安装好了openssl和MOD_SSL,如果你的
     openssl安装时的prefix设置为/usr/local/openssl,那么把/usr/local/openssl/bin加入执行文件查找路径。还需要MOD_SSL源代码中的一个脚本,它在MOD_SSL的源代码目录树下的pkg.contrib目录中,文件名为 sign.sh。将它拷贝到 /usr/local/openssl/bin 中。 

  先建立一个 CA 的证书,
首先为 CA 创建一个 RSA 私用密钥, 
[S-1] 
openssl genrsa -des3 -out ca.key 1024 
系统提示输入 PEM pass phrase,也就是密码,输入后牢记它。 
生成 ca.key 文件,将文件属性改为400,并放在安全的地方。 
[S-2] 
chmod 400 ca.key 
你可以用下列命令查看它的内容, 
[S-3] 
openssl rsa -noout -text -in ca.key 
利用 CA 的 RSA 密钥创建一个自签署的 CA 证书(X.509结构) 
[S-4] 
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt 
然后需要输入下列信息: 
Country Name: cn 两个字母的国家代号 
State or Province Name: An Hui 省份名称 
Locality Name: Bengbu 城市名称 
Organization Name: Family Network 公司名称 
Organizational Unit Name: Home 部门名称 
Common Name: Chen Yang 你的姓名 
Email Address: sunstorm@263.net Email地址 
生成 ca.crt 文件,将文件属性改为400,并放在安全的地方。 
[S-5] 
chmod 400 ca.crt 
你可以用下列命令查看它的内容, 
[S-6] 
openssl x509 -noout -text -in ca.crt 
下面要创建服务器证书签署请求, 
首先为你的 Apache 创建一个 RSA 私用密钥: 
[S-7] 
openssl genrsa -des3 -out server.key 1024 
这里也要设定pass phrase。 
生成 server.key 文件,将文件属性改为400,并放在安全的地方。 
[S-8] 
chmod 400 server.key 
你可以用下列命令查看它的内容, 
[S-9] 
openssl rsa -noout -text -in server.key 
用 server.key 生成证书签署请求 CSR. 
[S-10] 
openssl req -new -key server.key -out server.csr 
这里也要输入一些信息,和[S-4]中的内容类似。 
至于 extra attributes 不用输入。 
你可以查看 CSR 的细节 
[S-11] 
openssl req -noout -text -in server.csr 
下面可以签署证书了,需要用到脚本 sign.sh 
[S-12] 
sign.sh server.csr 
就可以得到server.crt。 
将文件属性改为400,并放在安全的地方。 
[S-13] 
chmod 400 server.crt 
删除CSR 
[S-14] 
rm server.csr 

最后apache设置 
如果你的apache编译参数prefix为/usr/local/apache, 
那么拷贝server.crt 和 server.key 到 /usr/local/apache/conf 
修改httpd.conf 
将下面的参数改为: 
SSLCertificateFILE /usr/local/apache/conf/server.crt 
SSLCertificateKeyFile /usr/local/apache/conf/server.key 
可以 apachectl startssl 试一下了。 

  & 5.4 测试及管理办法
cd /usr/local/apache_1.3.19 
bin/apachectl startssl 
提示输入pass phrase(就是你前面输入的,不知道你还记不记得) 
输入后就启动了一个支持SSL的apache 
在IE里输入https://192.168.0.1/ 试试,注意是https而不是http! 

  & 5.5 小结
  用电子认证服务器,可以进行公共密钥认证的管理、签署和废止。她使用的是X.509标准。 
             使用电子认证服务器,就可以自己管理公共密钥的认证,而不用依赖国外的CA服务中心。我们建立一个认证服务中心,就是为了能在我们的中国多媒体公众信息网上使用电子认证,以保证重要信息的安全。同时扩展该网的应用范围,把它建设成一个高速有效的企业单位联网平台。

 
你所在的位置 -> 主页 -> 超想软件 -> 通信网络 -> 服务器软件 ->详细
  首页 | 本站产品 | Delphi资料 | 免费资源 | 程序人生 | 软件工程 | 网站设计 | 推荐网站
声明:本站内容除注明原创以外均从网上摘抄,如有侵权请指明。
  如果您对我们的网站有什么意见或者建议,请与我们联系
powered by 建站易上手- V2.0