wxzh001,進來看對于APACHE+PHP+MYSQL+SSL的LINUX下安裝設置(轉自奧索)
發(fā)表時間:2023-08-17 來源:明輝站整理相關軟件相關文章人氣:
[摘要]本文作者:原奧索網(wǎng)用戶 herodongOICQ:6678705 /* 孤狼:原文實在太大了,36K多。我選擇重要部分貼上,如果需要原文可以MAILTO:wolflx@263.net我們的目標是安裝...
本文作者:原奧索網(wǎng)用戶 herodongOICQ:6678705
/* 孤狼:原文實在太大了,36K多。我選擇重要部分貼上,如果需要原文可以MAILTO:wolflx@263.net
我們的目標是安裝一個允許我們托管多個網(wǎng)站的web服務器,其中一些是針對電子商務的安全解決方案,而大部分網(wǎng)站是通過連接一個數(shù)據(jù)庫服務器并且提取其數(shù)據(jù)的腳本驅動的。
為了這個任務所需的工具是:
Apache-一個網(wǎng)站服務器
Mod_SSL-一個安全套接字層(SSL)的模塊
OpenSSL-開放源代碼工具箱(mod_ssl所需)
RSARef-僅對美國用戶
MySQL-一個數(shù)據(jù)庫服務器
PHP-一種腳本語言
“條條大路通羅馬”……因此這只是很多能達到我們要求的配置之一。我選擇這樣的配置,是因為它是最簡單和最快的一種。選擇Mod_SSL/OpenSSL的原因是因為我有它的先前經(jīng)驗,是最快配置和最容易安裝的一種。為了彼此方便地與Apache集成,我選擇了PHP和MySQL。記住,Perl能做到你想要做任何工作,然而,PHP對任何想學習它地程序員來說簡單并且容易。
希望你將在結束這個簡單的指南后能成功地完成下列目標。
安裝并設置MySQL數(shù)據(jù)庫服務器
安裝并設置具備SSL的Apache網(wǎng)站服務器
安裝并配置服務器端腳本的PHP 4.0超文本預處理器
創(chuàng)造一些樣本證書用于Apache SSL
本文假設你已經(jīng)把下列軟件安裝在你的系統(tǒng)上了。
Perl (最好是ver 5+)
gzip或gunzip
gcc 和 GNU make
準備
Apache (Web服務器)-http://www.apache.org
Mod_SSL (安全服務器層)-http://www.modssl.org
OpenSSL (SSL工具箱)-http://www.openssl.org
PHP (腳本語言)-http://www.php.net
MySQL (SQL數(shù)據(jù)庫服務器 )-http://www.mysql.com
下載所有(tar文件)源代碼到一個臨時目錄下。保證你把他們放在有很多空間的地方……你應該以root身份下載他們以避免權限問題。
我們的計劃
我們的計劃是首先安裝MySQL服務器并保證它工作,然后我們將安裝PHP和Mod_SSL,最后我們將安裝Apache網(wǎng)站服務器。在我們安裝了Apache以后,我們可以測試PHP和Mod_SSL支持是否起作用了。
MySQL源代碼安裝(UNIX)
你必須用來執(zhí)行安裝MySQL源代碼分發(fā)的基本命令是(自一個沒解開“tar”文件):
通過使用su成為 root用戶。
$su
直接進入你有tar文件的目錄。(使用一個臨時目錄。這里使用 /tmp/download/ )
#cd /tmp/download/
使用下列命令提取文件。
# gunzip -d -c mysql-3.22.xx.tar.gz tar xvf -
改變到新目錄,它在提取期間創(chuàng)建。
# cd mysql-3.22.xx
現(xiàn)在你可以開始“配置”MySQL服務器。你可以用configure指定很多選項,使用configure --help查看所有的選項。我已經(jīng)選擇--prefix指定到安裝地點的直接路徑。configure將檢查你的編譯器和一些其他東西。如果你有任何錯誤,你可以檢查config.cache文件查看錯誤。
# configure --prefix=/usr/local/mysql
在你完成了配置以后,你可以執(zhí)行下列命令make真正的二進制代碼。
# make
現(xiàn)在你已準備好安裝所有的二進制代碼。運行下列命令在你用configure --prefix選項指定的目錄下安裝二進制代碼。
# make install
PHP安裝(UNIX)
現(xiàn)在安裝PHP語言。你下載了最新的beta版,但是你可能必須下載非beta版本。記住beta版本需要GNU make。
你仍然假定是root,如果不是,su回到root。
PHP要求你已經(jīng)預先配置好的Apache,以便它能知道所需的東西在哪兒。在以后你安裝Apache服務器時,你將會回到這里。改變到你有源代碼的目錄。
# cd /tmp/DOWNLOAD
# gunzip -c apache_1.3.x.tar.gz tar xf -
# cd apache_1.3.x
# ./configure
# cd ..
好的,現(xiàn)在你可以開始PHP的安裝。提取源代碼文件并進入其目錄。如果你下載了版本3,在數(shù)字和命令上有一個改變,不大的改變。
# gunzip -c php-4.0.x.tar.gz tar xf -
# cd php-4.0.x
如果你正在編譯代碼,configure將永遠是你的朋友。:-) 因此,configure有很多選項。使用configure --help確定你想要增加哪些。我只是需要MySQL和LDAP,并且當然Apache。
# ./configure --with-mysql=/usr/local/mysql \
--with-xml \
--with-apache=../apache_1.3.x \
--enable-track-vars \
--with-ldap
make并安裝二進制代碼。
# make
# make install
拷貝ini文件到lib目錄。
# cp php.ini-dist /usr/local/lib/php.ini
Apache 與 Mod_SSL
該配置并安裝mod_ssl和Apache了。對此,你將需要有rsaref-2.0文件。在http://ftpsearch.lycos.com/上搜索“rsaref20.tar.Z”。如果你不喜歡Lycos,你可以選擇其他搜索引擎來搜索文件。當然只有你在美國才需要這個文件。(管它呢,你也可從別處下載,首先在http://ftpsearch.ntnu.no/查找“rsaref20.tar.Z”,好多啊!。)
創(chuàng)建rasref目錄,你將在該目錄提取文件。注意。這假定你下載了一個臨時目錄,而你就在此目錄。
# mkdir rsaref-2.0
# cd rsaref-2.0
# gzip -d -c ../rsaref20.tar.Z tar xvf -
現(xiàn)在配置并構造OpenSSL庫。
# cd rsaref-2.0
# cp -rp install/unix local
# cd local
# make
# mv rsaref.a librsaref.a
# cd ../..
安裝OpenSSL。記住,你將用它來創(chuàng)建臨時證書和CSR文件。--prefix選項指定主安裝目錄。
# cd openssl-0.9.x
# ./config -prefix=/usr/local/ssl \
-L`pwd`/../rsaref-2.0/local/ rsaref -fPIC
現(xiàn)在make、測試并安裝它。
# make
# make test
# make install
# cd ..
我們將配置MOD_SSL模塊,然后用Apache配置指定它為一個可裝載的模塊。
# cd mod_ssl-2.5.x-1.3.x
# ./configure \
--with-apache=../apache_1.3.x \
# cd ..
現(xiàn)在我們可以把更多的Apache模塊加到Apache源代碼樹中。可選的--enable-shared=ssl選項使得mod_ssl構造成為一個DSO“l(fā)ibssl.so”。關于在Apache支持DSO的更多信息,閱讀Apache源代碼樹中的INSTALL和 htdocs/manual/dso.html文檔。我強烈建議ISP和軟件包裝維護者為了最靈活地使用mod_ssl而使用DSO工具,但是注意,DSO不是在所有平臺上的Apache都支持。
# cd apache_1.3.x
# SSL_BASE=../openssl-0.9.x \
RSA_BASE=../rsaref-2.0/local \
./configure \ --enable-module=ssl \
--activate-module=src/modules/php4/libphp4.a \
--enable-module=php4 --prefix=/usr/local/apache \
--enable-shared=ssl
[...你可加入更多的選項...]
生成Apache,然后生成證書,并安裝...
# make
如果你已正確地完成,你將得到類似于以下的信息:
+-----------------------------------------------------------------------+
Before you install the package you now should prepare the SSL
certificate system by running the 'make certificate' command.
For different situations the following variants are provided:
% make certificate TYPE=dummy (dummy self-signed Snake Oil cert)
% make certificate TYPE=test (test cert signed by Snake Oil CA)
% make certificate TYPE=custom (custom cert signed by own CA)
% make certificate TYPE=existing (existing cert)
CRT=/path/to/your.crt [KEY=/path/to/your.key]
Use TYPE=dummy when you're a vendor package maintainer,
the TYPE=test when you're an admin but want to do tests only,
the TYPE=custom when you're an admin willing to run a real server
and TYPE=existing when you're an admin who upgrades a server.
(The default is TYPE=test)
Additionally add ALGO=RSA (default) or ALGO=DSA to select
the signature algorithm used for the generated certificate.
Use 'make certificate VIEW=1' to display the generated data.
Thanks for using Apache & mod_ssl. Ralf S. Engelschall
rse@engelschall.com
www.engelschall.com
+-----------------------------------------------------------------------+
現(xiàn)在你可以創(chuàng)建一個定制的證書。該選項將提示輸入你的地址、公司、和其他一些東西。關于證書,請參閱本文的結尾。
# make certificate TYPE=custom
現(xiàn)在安裝Apache...
# make install
如果一切正常,你應該看到類似于以下的信息:
+----------------------------------------------------------------------------------+
You now have successfully built and installed the
Apache 1.3 HTTP server. To verify that Apache actually
works correctly you now should first check the
(initially created or preserved) configuration files
/usr/local/apache/conf/httpd.conf
and then you should be able to immediately fire up
Apache the first time by running:
/usr/local/apache/bin/apachectl start
Or when you want to run it with SSL enabled use:
/usr/local/apache/bin/apachectl startssl
Thanks for using Apache. The Apache Group
http://www.apache.org /
+----------------------------------------------------------------------------------+
現(xiàn)在驗證Apache和PHP是否正在工作。然而,我們需要編輯srm.conf和httpd.conf保證我們把PHP類型加到了配置中。查看httpd.conf并去掉下列行的注釋。如果你精確地遵循了本文的指令,你的httpd.conf文件將位于/usr/local/apache/conf目錄。文件有一行針對php4的addtype加了注釋,現(xiàn)在就去掉注釋。httpd.conf 文件--片斷
> # And for PHP 4.x, use:
> #
---> AddType application/x-httpd-php .php
---> AddType application/x-httpd-php-source .phps
現(xiàn)在我們準備啟動Apache服務器看它是否在工作。首先我們將啟動不支持SSL的服務器看它是否啟動了。我們將檢查對PHP的支持,然后我們將停止服務器并且啟動啟用了SSL支持的服務器并檢查我們是否一切正常。configtest 將檢查所有配置是否正確設置。
# cd /usr/local/apache/bin
# ./apachectl configtest
Syntax OK
# ./apachectl start
./apachectl start: httpd started
//孤狼測試APACHE+PHP+MYSQL部分略
SSL 選擇正在工作嗎??
好了,現(xiàn)在我們準備測試SSL了。首先停止服務器,并以啟用SSL的選項重啟它。
# /usr/local/apache/bin/apachectl stop
# /usr/local/apache/bin/apachectl startssl
測試它是否工作:通過用一個Netscape與服務器連接并且選擇https協(xié)議,即:https://youserver.yourdomain.com 或 http://yoursever.yourdomain.com:443 ,也可以再試一下你的服務器的 ip地址,即:https://xxx.xxx.xxx.xxx和 http://xxx.xxx.xxx.xxx:443 。
如果它起作用了,服務器將把證書發(fā)送到瀏覽器以建立一個安全連接。這將讓瀏覽器提示你接受自己簽署的證書。,如果它是來自VeriSign或Thawte的一張證書,那么瀏覽器將不提示你,因為證書來自一個可信的證書授權機構(CA)。在我們的情況中,我們創(chuàng)建并簽署我們自己的證書……我們不想馬上買一個。首先,我們想要保證我們能使一切正常。
注意,我們竟能在同一文件中同時有HTML和PHP命令。這就是PHP腳本的奇妙之處。
SSL虛擬主機
創(chuàng)建SSL虛擬主機類似非SSL。除了你需要指定另外的指令,還有,你需要增加一個DNS記錄并且修改 httpd.conf。這里有一個例子。
#--------------------------------------------#
# SSL Virtual Host Context
#--------------------------------------------#
# General setup for the virtual host
DocumentRoot /usr/local/apache/htdocs
ServerAdmin webmaster@securedomain1.com
ServerName www.securedomain1.com
ErrorLoglogs/domain1.com-error_log
TransferLog logs/domain1.com-transfer_log
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. A test
# certificate can be generated with `make certificate' under
# built time. Keep in mind that if you've both a RSA and a DSA
# certificate you can configure both in parallel (to also allow
# the use of DSA ciphers, etc.)
# Note that I keep my certificate files located in a central
# location. You could change this if you are an ISP, or ASP.
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key
# Per-Server Logging:
# The home of a custom SSL log file. Use this when you want a
# compact non-error SSL logfile on a virtual host basis.
CustomLog /usr/local/apache/logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
記住你有很多指令可以指定。我們將在另一篇有關配置Apache的文章中討論,本文只是一個入門性指南。
生成證書
這是如何生成證書的按部就班的描述。
為你的Apache服務器創(chuàng)建一個RSA私用密鑰(被Triple-DES加密并且進行PEM格式化):
# openssl genrsa -des3 -out server.key 1024
請在安全的地方備份這個server.key文件。記住你輸入的通行短語(pass phrase)!你可以通過下面的命令看到這個RSA私用密鑰的細節(jié)。
# openssl rsa -noout -text -in server.key
而且你可以為這個RSA私用密鑰創(chuàng)建一個加密的PEM版本(不推薦),通過下列命令:
# openssl rsa -in server.key -out server.key.unsecure
用服務器RSA私用密鑰生成一個證書簽署請求(CSR-Certificate Signing Request)(輸出將是PEM格式的):
# openssl req -new -key server.key -out server.csr
當OpenSSL提示你“CommonName”時,確保你輸入了服務器的FQDN("Fully Qualified Domain Name") ,即,當你為一個以后用https://www.foo.dom/訪問的網(wǎng)站生成一個CSR時,這里輸入"www.foo.dom"。你可借助下列命令查看該CSR的細節(jié):
# openssl req -noout -text -in server.csr
將CSR發(fā)到一個CA
現(xiàn)在你必須發(fā)送該CSR到一個CA以便簽署,然后的結果才是可以用于Apache的一個真正的證書。
有兩種選擇:
第一種,你可以通過一個商業(yè)性CA如Verisign 或 Thawte簽署證書。那么你通常要將CSR貼入一個web表格,支付簽署費用并等待簽署的證書,然后你可以把它存在一個server.crt文件中。關于商業(yè)性CA的更多信息,請參見下列鏈接:
Verisign - http://digitalid.verisign.com/server/apacheNotice.htm
Thawte Consulting - http://www.thawte.com/certs/server/request.html
CertiSign Certificadora Digital Ltda. - http://www.certisign.com.br
IKS GmbH - http://www.iks-jena.de/produkte/ca /
Uptime Commerce Ltd. - http://www.uptimecommerce.com
BelSign NV/SA - http://www.belsign.be
你自己的CA
第二種,你可以利用自己的CA并由該CA簽署CSR。你可以創(chuàng)建自己的認證中心來簽署證書。最簡單的方法是利用OpenSSL提供的CA.sh或 CA.pl腳本。比較復雜而且是手工的方法是:
為你的CA創(chuàng)建一個RSA私用密鑰( 被Triple-DES加密并且進行PEM格式化的):
# openssl genrsa -des3 -out ca.key 1024
請在安全的地方備份這個ca.key文件。記住你輸入的通行短語(pass phrase)!你可以通過下面的命令看到這個RSA私用密鑰的細節(jié)。
//孤狼注釋:最好不要輸入pass phrase,直接敲回車,不然默認的APACHE啟動要你輸入呢!不過如果你對SHELL熟,可以直接在SHELL里改
# openssl rsa -noout -text -in ca.key
而且你可以為這個RSA私用密鑰創(chuàng)建一個加密的PEM版本(不推薦),通過下列命令:
# openssl rsa -in ca.key -out ca.key.unsecure
利用CA的RSA密鑰創(chuàng)建一個自簽署的CA證書(X509結構)(輸出將是PEN格式的):
# openssl req -new -x509 -days 365 -key ca.key -out ca.crt
你可以通過下列命令查看該證書的細節(jié):
# openssl x509 -noout -text -in ca.crt
準備一個簽署所需的腳本,因為"openssl ca"命令有一些奇怪的要求而且缺省的OpenSSL配置不允許簡單地直接使用"openssl ca"命令,所以一個名為sign.sh的腳本隨mod_ssl分發(fā)一道發(fā)布(子目錄pkg.contrib/)。 使用該腳本進行簽署。
現(xiàn)在你可以使這個CA簽署服務器的CSR,以便創(chuàng)建用于Apache服務器內(nèi)部的真正的SSL證書(假定你手頭已經(jīng)有一個server.csr):
# ./sign.sh server.csr
它簽署服務器的CSR并且結果在一個server.crt文件中。
現(xiàn)在你有兩個文件:server.ket和server.crt。在你的Apache的httpd.conf文件中,如下使用它們:
SSLCertificateFile /path/to/this/server.crt
SSLCertificateKeyFile /path/to/this/server.key
server.csr不再需要了。