中小企業服務器配置-Web服務器

第一節 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 [email protected]
#設置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 \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

#所有的LogFormat都用來定義日誌中的條目
LogFormat "%h %l %u %t \"%r\" %>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 [email protected] #網管郵件地址
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
    1. jakarta-tomcat.tar.gz,
      http://jakarta.apache.org/builds/tomcat/release/v3.1/bin/
  2. 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 數據庫名;
刪除數據庫
命令:dro p 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的安裝到此結束

  1. 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: [email protected] 我的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: [email protected] 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服務中心。我們建立一個認證服務中心,就是爲了能在我們的中國多媒體公衆信息網上使用電子認證,以保證重要信息的安全。同時擴展該網的應用範圍,把它建設成一個高速有效的企業單位聯網平臺。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章