Archive for category www

apache+mod ssl 如何申请正式SSL证书

第一步:生成CSR文件和密钥

CSR包含公司的信息,包括域名,公司名,联系方式等,还有密钥对中的公钥,私钥应该保存在本地,注意,必须保存好本地的私钥,如果遗失或者泄漏,这个证书就没有用了。

“OpenSSL”工具被用来生成CSR和密钥,它来自于OpenSSL包,一般被安装在/usr/local/ssl/bin目录下,如果您安装在其他目录下,请做相应调整:

1. 切换目录到SSL KEY,输入

cd /usr/local/ssl/private

2. 输入下列命令生成密钥对:

openssl genrsa -des3 1024 > /ssl.key

3. 切换目录到SSL Certificate:

cd /usr/local/ssl/crt

4. 使用下列命令生成CSR文件:

openssl req -new -key /ssl.key > ssl.csr

第二步:提交CA,签名

一般有:

1.verisign 的 Secure Site,一年报价 RMB 6000 www.itrus.com.cn

2. thawte 的 SSL123,一年报价 129$ http://www.thawte.com

3. geotrust 的 RapidSSL,一年报价 RMB 488 www.myssl.cn

这里主要是对网站做认证,然后对CSR提交签名,(你可以在网站上,对CSR做检查,如果CSR有问题,不要急着付钱,有些地方先让你付钱,然后说你的CSR或者,提交的资料有问题,骗钱,这个大家当心)签名好以后,发把证书发回来,记得用文本方式保存下来。

第三步:装回证书

1.将证书内容存成一个文件

您会收到一封来自迅通诚信的邮件,证书内容附在服务器中。如果证书是以附件的形式(Cert.cer)夹带在邮件中,您就可以直接应用它。如果您的 证书中以文本的方式存在邮件中,您就需要将邮件中的证书部分的内容用Vi或Notepad存成一个纯文本文件。不要将其存成Microsoft Word 或其它字处理软件格式,并确定证书内容中不含有空行和空格。如下所示:

将证书文件存到某个目录下,比如: /etc/ssl/crt/。公钥文件和私钥文件都钥存到这个目录下。私钥可以标记成private.key,公钥标记成public.crt。

我们建议您将存私钥的目录改为只读属性。

2.下载中间级证书

如果您申请的是级联式服务器证书,您需要安装中间级证书,以构成一个证书链,使浏览器信任您的证书;否则无须安装,可直接进入下一步。 将中间级证书存成一个文本文件,命名为"intermediate.crt",将它存到第一步中的相同目录下:/etc/ssl/crt/ 。

配置httpd.conf文件

要将证书应用到您的服务器中,必须配置httpd.conf文件,您需要加入下列SSL 目录信息:

SSLCertificateFile /etc/ssl/crt/public.crt //本地证书文件
SSLCertificateKeyFile /etc/ssl/crt/private.key //私钥文件
SSLCertificateChainFile /etc/ssl/crt/intermediate.crt //中间级证书文件,应用于全球服务器证书

您需要根据具体情况修改SSL 目录信息

将httpd.conf文件存盘并重新启动Apache,您可以用以下命令启动Apache:

apachectl stop
apachectl&nbs p;startssl

您现在已经将服务器证书应用到您的Apache服务器了。

,

No Comments

基于虚拟主机的PHP配置

有个朋友想在我的主机上安置一个站点,PHP的。安置了以后才发现,他的系统默认是session.auto_start的。正好与我这个站点的设置有冲突,使用统一个PHP设置不太可能了。查看了官方的手册,找到了解决方案:

我用PHP5配置为:

打开服务器的AllowOverride 权限
AllowOverride All

<IfModule mod_php5.c>  php_value include_path ".:/usr/local/lib/php"   php_admin_flag safe_mode on</IfModule>

PHP4的:

<IfModule mod_php4.c>  php_value include_path ".:/usr/local/lib/php"  php_admin_flag safe_mode on</IfModule>

文物级的PHP3:<IfModule mod_php3.c>  php3_include_path ".:/usr/local/lib/php"  php3_safe_mode on</IfModule>

找到PHP.ini中的配置选项后替换掉上面例子中的配置就可以了。其中,php_admin_flag使用与“是非型”、“整数型”以及“浮点数型”的php配置;而php_value则对应了“字符型”。放置在<VirtualHost >之间就可以实现为每个虚拟主机设置不同的配置了。

最后还是提醒PHP的广大开发者:尽量使用PHP的默认配置作为基础环境,如果必须修改相关的设置参数,可以使用php的ini_set()函数来实现。

, ,

No Comments

加固PHP环境

  PHP作为Apache的模块运行时,Apache本身的安全起主导作用,因此如果配置正确的话,PHP应该是一个十分安全的环境,但是如果PHP是以CGI方式来运行的话,就没有这么安全了。

  本文中提到的操作,对Unix和Windows都适用。

  一、作为Apache模块来运行

  因为一般说来,Apache会以“nobody”或者“www”来运行,所以,PHP作为模块是十分安全的。

  如果PHP在虚拟主机环境下,可能会产生用户能浏览其他用户文件的危险。一个简单的脚本如下:

  
  // 假定文档根位于 /usr/local/websites/mydomain

   $location = ../; // 到上一级目录
   $parent = dir( $location);

  // 显示当前目录: /usr/local/websites
  while( $entry =  $parent->read()) {
  echo  $entry .
;
  }
   $parent->close();
  ?>

  这样,只要修改 $location,用户就可以浏览虚拟主机上所有其他用户的文件了。为了减少这样的危险,我们需要看一下php.ini ,修改其中的safe_mode, doc_root和usr_dir 参数,把用户限制在他自己的虚拟主机环境下:

  safe_mode = On
  doc_root = /usr/local/apache/htdocs
  user_dir = /home/albertxu/htdocs

  二、作为CGI

  把PHP以CGI方式运行需要十分小心,可能会泄露你不想让人知道的信息。

  第一件事情要注意的就是一定要把执行文件放到文档根目录以外的地方。例如/usr/local/bin,因此所有的CGI文件开头必须带有:

  #!/usr/local/bin/php

  防止用户直接调用CGI的办法是在Apache中强迫CGI重定向:

  Action php-script /cgi-bin/php.cgi
  AddHandler php-script .php

  这会把下面的URL

  http://example.com/mywebdir/test.htm

  转换为:

  http://example.com/cgi-bin/php/mywebdir/test.htm

  在以CGI方式编译PHP时,最好采用下面的选项:

  –enable-force-cgi-redirect

,

No Comments

设置Apache支持cache

默认情况下,apache安装完以后,是不允许被cache的。如果外接了cache或squid服务器要求进行web加速的话,就需要在htttpd.conf里进行设置,当然前提是在安装apache的时候要激活mod_cache的模块。
以下简单介绍一下安装与配置的步骤:
1.        apache版本:httpd-2.0.49.tar.gz
2.        安装httpd-2.0.49.tar.gz:
# tar –zxvf httpd-2.0.49.tar.gz
# cd httpd-2.0.49
#./configure –enable-cache –enable-disk-cache –enable-mem-cache
#mke
#make install

3.        检验是否安装了cache模块
/usr/local/apache2/bin/apachectl –l
如果有mod_cache.c
  mod_disk_cache.c
  mod_mem_cache.c
这3个模块,说明该apache可以支持cache了
4.更改httpd.conf的设置
vi /usr/local/apache2/conf/httpd.conf
在末尾添加上:
<IfModule mod_cache.c>

CacheForceCompletion 100
  CacheDefaultExpire 3600
  CacheMaxExpire 86400
  CacheLastModifiedFactor 0.1
</IfModule>

5.设置虚拟目录
然后保存退出。启动apache

6.参数的解释:
mod_cache:
CacheEnable: 启动 mod_cache,其后接两个参数。第一个参数指定快取的种类,应设为 mem (记忆体快取) 或 disk (磁碟快取) 之其一;第二个参数指定使用快取的 URI 路径,如果对整个网站 (或虚拟主机) 进行快取,简单指定为根目录(/) 即可。
CacheForceCompletion: 这个值指定当 HTTP request 被取消时,内容的产生动作要完成的百分比;预设是 60(%)。
CacheDefaultExpire: 指定快取的预设过期秒数;预设值是一小时 (3600)。
CacheMaxExpire: 指定快取最大的过期秒数;预设值是一天 (86400)。
CacheLastModifiedFactor: 用来从回应里 Last Modified 资讯算出 expire date。
计算方式是:
expire period (过期时距) = 最后更新后至今的时间间距 * CacheLastModifiedFactor

expire date = 目前时间 + expire period
不过无论如何,过期时间不能超过 CacheMaxExpire 的设定值。

现在。如果用squid对该服务器进行反向代理的话,就可以通过cache 实现web的加速了。

1 Comment

给IIS Web服务器装上一把锁

为了为了提高IIS的安全性,微软提供了两 个工具:IIS Lockdown和URLScan,其中IIS Lockdown 2.1包含了URLScan。IIS Lockdown 2.1具有如下功能:

⑴ 禁用或者删除不必要的IIS服务和组件。

⑵ 修改默认配置,提高系统文件和Web内容目录 的安 全性。

⑶ 用URLScan来过滤HTTP请求。

本文介绍如何运用IIS Lockdown 2.1的前两项功能。注 意本文的说明针对 IIS Lockdown 2.1版本,以前版本的用法大 不相同。

一、注意事项

IIS Lockdown会改变IIS的运行方式,因此很可能与依 赖IIS某些功能的应用冲突。特别地,如果要在一个运行 Microsoft Exchange 2000 Server、Exchange Server 5.5或Microsoft SharePoint Portal Server的服务器上安装IIS Lockdown和URLScan,应当加倍小心。

微软的两篇文章解释了可能遇到的困难和解决办法:《 XADM:在Exchange 2000环境中使用IIS Lockdown向导的已知问题和调整策略》(http://support.microsoft.com/default.aspx? scid=kb;en-us;q309677),以及《SPS:IIS Lockdown工具影响SharePoint Portal Server》(http://support.microsoft.com/default.aspx? scid=kb;en-us;q309675)。

另外,在正式应用IIS Lockdown或URLScan之前,务必搜索微软的知识库,收集可能出 现问题的最新资料。掌握这些资料并了解其建议之后,再在测 试服务器上安装IIS Lockdown,全面测试Web应用需要的IIS功能是否受到影响。最 后,做一次全面的系统备份,以便在系统功能受到严重影响时 迅速恢复。

二、安装

IIS Lockdown 2.1可以从http://www.microsoft.com/downloads/rel ease.asp?releaseid=33961下 载。下载之后得到一个 iislockd.exe,双击运行,把它解压缩到一个临时目录并启动 IIS Lockdown向导。但是,如果要用IIS Lockdown来保护多个服务 器,最好按照下文的说明把它解压缩到一个专用目录,这样就 不必每次运行IIS Lockdown都要重新解压缩了。

必须注意的是,下载得到的是一个自解压缩的执行文件 ,这个执行文件与压缩包里面的应用执行文件同名。因此,如 果把iislockd.exe解压缩到它本身所在的目录,就会引起文件 名称冲突。请按照下面的安装步骤执行,以避免可能出现的问 题: 
㈠ 将iislockd.exe下载到一个临 时目录。
㈡ 打开控制台窗口,进入临时目录,执行命令“iislockd.exe /q /c /t:c:IISLockdown”解开压缩,/q要求以“安静”模式操作, /c要求IIS Lockdown只执行提取文件的操作,和-t选项一起使用,-t选项 指定了要把文件解压缩到哪一个目录(例如在本例中,要求把 文件解压缩到c:IISLockdown目录)。表一列出了 iislockd.exe解压缩得到的主要文件,注意iislockd.exe包含 了URLScan的文件,但本文不准备详细探讨URLScan。

表一:IIS Lockdown 2.1主要文件
IIS Lockdown文件 说明
iislockd.exe IIS Lockdown主执行文件。
iislockd.ini 配置和选项文件。
iislockd.chm 联机帮助。
runlockdunattended.doc 有关“无人值守”运行方式的文 档。
404.dll “文件没有找到”应答文件。
URLScan文件 说明
urlscan.exe URLScan安装程序包 。

No Comments

关于无法访问网站的解决方法

最近不知出于何种原因一度各大开源网站不能访问,先是sourceforge.net, 接着是FreeBSD.org,现在sf.net可以访问了,php.net又不行了,估计这是跟互联网入口的管理有关。

上有政策下有对策,我将自己域名的freebsd.litrin.net指向了Freebsd.org,解决了问题,除此之外,可以使用https://www.daveproxy.co.uk/ 作代理访问。

No Comments

用LDAP实现Apache验证

在使用APACHE的时候有时会接触到验证的问题,而APACHE本身自带的验证已经是非常全的了,习惯上直接利用apache的mysql验证模块实现,但这里我们用APACHE与LDAP整合来说明一下APACHE的验证.

1.安装openldap

openldap-stable-20040329.tgz http://www.openldap.org
db-4.1.25.NC.tar.gz http://www.sleepycat.com

gunzip < db-4.1.25.NC.tar.gz |tar xvf -
cd db-4.1.25.nc
./configure
make
make install

gunzip < openldap-stable-20040329.tgz |tar xvf -
cd openldap-2.1.29
CPPFLAGS="-I/usr/local/BerkeleyDB.4.1/include" LDFLAGS="-L/usr/local/BerkeleyDB.4.1/lib" ./configure –prefix=/usr/local/openldap –enable-ldbm
make depend
make
make test
make install

PATH=$PATH:/usr/local/openldap/bin
export PATH

修改/usr/local/openldap/etc/openldap/slapd.conf

include         /usr/local/openldap/etc/openldap/schema/core.schema
include         /usr/local/openldap/etc/openldap/schema/corba.schema
include         /usr/local/openldap/etc/openldap/schema/cosine.schema
include         /usr/local/openldap/etc/openldap/schema/inetorgperson.schema
include         /usr/local/openldap/etc/openldap/schema/java.schema
include         /usr/local/openldap/etc/openldap/schema/misc.schema
include         /usr/local/openldap/etc/openldap/schema/nis.schema
include         /usr/local/openldap/etc/openldap/schema/openldap.schema

database        bdb
suffix          "dc=ldaptest,dc=com"
rootdn          "cn=root,dc=ldaptest,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoid.  See slappasswd( and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw          123456

建立basedn.ldif文件
dn: dc=ldaptest,dc=com
dc: ldaptest
objectClass: domain

建立userdn.ldif
dn:cn=user1,dc=ldaptest,dc=com
cn: user1
sn: USER1
uid: user1
userPassword: user1
objectClass: inetOrgPerson

dn:cn=user2,dc=ldaptest,dc=com
cn: user2
sn: USER2
uid: user2
userPassword: user2
objectClass: inetOrgPerson

dn:cn=user3,dc=ldaptest,dc=com
cn: user3
sn: USER3
uid: user3
userPassword: user3
objectClass: inetOrgPerson

dn:cn=user4,dc=ldaptest,dc=com
cn: user4
sn: USER4
uid: user4
userPassword: user4
objectClass: inetOrgPerson

启动LDAP服务器
/usr/local/openldap/libexec/slapd

添加记录:
ldapadd -D "cn=root,dc=ldaptest,dc=com" -w 123456 -f /basedn.ldif
ldapadd -D "cn=root,dc=ldaptest,dc=com" -w 123456 -f /userdn.ldif

2.安装apr-1.2.2

./configure
make
make install

3.安装apr-util-1.2.2               

./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr –with-ldap –with-ldap-include=/usr/local/openldap/include

–with-ldap-lib=/usr/local/openldap/lib
make
make install

4.安装openssl

./configure
make
make install

5.安装apache-2.2.0(安装再根下的apache2的目录下)

./configure –prefix=/apache2 –enable-so –enable-authnz-ldap –enable-ldap
make
make install

6.配置httpd.conf

将ServerNmae 修改为自己本机的域名或者IP
在最后一行加入 include conf/app_auth.conf

7.配置/apache2/conf/app_auth.conf

<Location />
AuthType basic
AuthName "private area"
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPURL ldap://localhost:389/dc=ldaptest,dc=com?uid?sub?(objectClass=*)
require ldap-user "user1"
#require ldap-user "user3"
#require ldap-user "user4"
#require ldap-user "user2"
require valid-user
</Location>

8.当配置完所有的软件以后,就可以启动APACHE了
/apache2/bin/apachectl start

这时候配置的是默认情况,也就是对整个服务器各目录都进行验证,如果需要对单独的地方进行验证,可以查阅Location的用法

No Comments

FireFox1.5.0.1 Released

春节假期的最后一天,我打开自己的电脑,FF提醒有新版本好更新——看来1.5版本添加的"自动升级功能确实是真的" 。

以上是题外话,最新版本的FF用了非常保守的版本号,不知出于什么原因,根据官方介绍,主要升级了。

  • 增强了稳定性。(每一版本必备)
  • 改善了对Mac OS X系统的支持。(没有机器测试,似乎与我无关)
  • 增加了对冰岛国际域名(.is)的支持。(不懂冰岛语,更加与我无关)
  • 修正了n个内存泄漏漏洞。(似乎有越堵越多的迹象)
  •  安全性能得到提升。(照例项目)
  • 除此之外,似乎开发者故意隐瞒有些漏洞,这很不合开源精神。抗议一下。

别的也没有什么好介绍的,反正升级就是了。最近值得庆幸的是随着FF社区的不断努力,连淘宝这样的电子商务网站也开始兼容FF了,下一个就只剩下个大银行网站不支持了。

No Comments

何谓Ajax

Ajax并不是一种新技术。它实际上是几种已经在各自领域大行其道技术的强强结合。Ajax混合了:

  • 基于XHTML/CSS等现有的web页面技术
  • 由DOM实现动态显示与交互
  • 通过XML等形式进行数据交换及处理
  • 使用javascript整合上述技术

总的来说:Ajax能 够实现不刷新浏览器窗口而满足用户的操作,简单的说其实就是动态生成Javascript代码以及所需的数据文件(XML)。现在一些看上去很Cool的网站,很多是用这项技术实现的,其中包括: orkut、Gmail、Google Group、Google Suggest、Google Maps、Flickr、A9.com等。2SIMPLE的Co-mment系统虽然没有用到XMLHttpRequest,其理念已经暗合容Ajax,实现了不刷新网页提供动态内给用户。

但Ajax也并非没有缺点,最大的就是浏览器去相关性——Gmail的Ajax就不支持opare访问,但这缺点完全是由于各个浏览之间对于HTML DOM以及Javascript解释的不一致造成的。

No Comments

javascript正则表达式测试工具

弄了一天让人头痛的JS正则表达式,在网上找到这么一个小玩意,比较直观,呵呵直接用浏览器就可以测试了

1 Comment