分享
 
 
 

openssl + apache + mod_ssl安装配置调试过程

王朝system·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

主要介绍在linux下怎么搭建一个包含mod_ssl模块的apache服务器,并且如何根据不同的要求配置SSL

一 下载

1,从openssl.org下载openssl到/usr/local

2.从apache.org下载apache到/usr/local

3.从modssl.org下载mod_ssl到/usr/local

二 解压缩

cd /usr/local

tar zxvf openssl-0.9.7e.tar.gz

tar zxvf mod_ssl-2.8.22-1.3.33.tar.gz

tar zxvf apache-1.3.33.tar.gz

三 更改一下名字

mv openssl-0.9.7e openssl

mv mod_ssl-2.8.22-1.3.33 mod_ssl

mv apache-1.3.33 apache

四 编译openssl

cd openssl

./config --prefix=/usr/local/openssl

make

make install

五 编译mod_ssl

cd ../mod_ssl

./configure --with-apache=../apache

六 编译apache

SSL_BASE=../openssl ./configure --enable-module=SSL

make

make install

到这里为止,已经把准备工作做好了,假如按照前面的步骤来的话应该是没有问题的.但是有几次我出现了openssl不能用,apache出怪毛病的问题,呵呵最好的办法就是删除了重新安装(呵呵是不是很没追求!)

七 建立自己的CA

cd /

mkdir CAroot 建立自己的CA目录,我不知道这样为CA建一个目录好不好

cd CAroot

cp /usr/local/openssl/ssl/openssl.cnf ./openssl.cnf 将CA配置文件拷过来

vi openssl.cnf 修改配置文件中的dir,将./demoCA修改为/CAroot

mkdir newcerts

mkdir certs

mkdir crl

mkdir private

vi index.txt 可以不写数据,直接:wq

vi serial 写入00,然后:wq

vi ./private/.rand 写入两行随机数,然后:wq

#呵呵,上面所作的这些全是根据openssl.cnf来的

openssl req -new -newkey -x509 rsa:1024 -keyout ./private/cakey.pem -out cacert.pem 为CA生成密钥和证书

八 为apache生成密钥和证书

cd /usr/local/apache/conf/ssl.crt

openssl req -new -newkey rsa:1024 -keyout ../ssl.key/server.key -out ../ssl.csr/server.csr 生成证书请求和密钥

openssl ca -in ../ssl.csr/server.csr -out server.crt -config /CAroot/openssl.cnf 用CA私钥签名证书请求

#现在已经得到了服务器的证书和私钥

九 修改httpd.conf

cd ..

vi httpd.conf

将ServerName 更改为sage 不设也可以,不过会出现警告

将SSLCertificateFile修改为/usr/local/apache/conf/ssl.crt/server.crt

将SSLCertificateKeyFile修改为/usr/local/apache/conf/ssl.key/server.key

#这是最基本的设置了,先用用试试看吧.

十 启动服务

/sbin/service iptables stop 这是要关掉防火墙了,呵呵我也不知道这样安全不安全,不过要是不关掉的话客户端将无法访问

/usr/local/apache/bin/apachectl startssl

十一 从客户端测试

从局域网找个windows电脑(LINUX也行)输入https://192.168.10.10 记住是https,要使http就直接不验证就通过了

此时将会出现一个对话框,一般第二个是对,毕竟时间都是有效的嘛.第三个是叹号那是因为访问站点与证书通用名不匹配,这需要在用openssl生成apache服务器证书时将通用名设定为192.168.10.10,第一个叹号是因为没有安装CA根证书,这时将/CAroot/cacert.pem拷到客户机安装就可以了,重新打开浏览器输入https://192.168.10.10,怎么什么反应也没有就进去了呢,呵呵,其实已经对服务器进行认真了,这和http://192.168.10.10有本质区别.

十二 配置更多的SSL应用(这个在/usr/local/apache/htdocs/manual/mod/mod_ssl有详细文档)

1,实现对客户端的认证

修改httpd.conf

SSLVerifyClient require

SSLVerifyDepth 1

SSLCACertificateFile /CAroot/cacert.pem

现在在客户端输入https://192.168.10.10 ,将要求出示证书,那现在就生成一个客户PKCS格式证书吧

cd /usr/local/apache/conf/ssl.crt

openssl req -new -newkey rsa:1024 -keyout ../ssl.key/client.key -out ../ssl.csr/client.csr 生成证书请求和密钥

openssl ca -in ../ssl.csr/client.csr -out client.crt -config /CAroot/openssl.cnf 用CA私钥签名证书请求

openssl pkcs12 -export -clclient -inkey ../ssl.key/client.key -in client.crt -out /home/share/client.p12

#/home/share目录是samba服务器的共享目录,一般是将client.p12放在USBkey中,为了方便所以直接共享了.

在客户端上安装client.p12,呵呵这样就可以实现双方的认证了,双方通信也实现了SSL.(to be continuing)

2:某些页面只允许持有证书的客户访问,其他页面允许所有人访问

修改httpd.conf,当然需要先作一些页面的准备,/usr/local/apache/htdocs/secure是我们放只允许有证书访问的目录

SSLVerifyClient none

SSLCACertificateFile conf/ssl.crt/ca.crt

<Location /secure>

SSLVerifyClient require

SSLVerifyDepth 1

</Location>

3.某些页面只允许持有某种特定证书内容的客户访问,其它页面允许所有人访问

在这里我假设允许我们局域网的人访问

SSLVerifyClient none

<Directory /usr/local/apache/htdocs/secure/area>

SSLVerifyClient require

SSLVerifyDepth 5

SSLCACertificateFile conf/ssl.crt/ca.crt

SSLCACertificatePath conf/ssl.crt

SSLOptions +FakeBasicAuth

SSLRequireSSL

SSLRequire %{SSL_CLIENT_S_DN_O} eq "ATR" and %{SSL_CLIENT_S_DN_OU} in {"305", "307", "309","313"}

</Directory>

4.允许局域网用户使用http访问局域网站点,但是需要外网用户使用强加密的https访问.

假设局域网用户ip为192.160.1.0-24.

下面的修改要放在HTTPS虚拟主机的外面,这样就可以同时适用于http和https访问

SSLCACertificateFile conf/ssl.crt/company-ca.crt

<Directory /usr/local/apache/htdocs>

# Outside the subarea only Intranet access is granted

Order deny,allow

Deny from all

Allow from 192.168.1.0/24

</Directory>

<Directory /usr/local/apache/htdocs/subarea>

# Inside the subarea any Intranet access is allowed

# but from the Internet only HTTPS + Strong-Cipher + Password

# or the alternative HTTPS + Strong-Cipher + Client-Certificate

# If HTTPS is used, make sure a strong cipher is used.

# Additionally allow client certs as alternative to basic auth.

SSLVerifyClient optional

SSLVerifyDepth 1

SSLOptions +FakeBasicAuth +StrictRequire

SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128

# Force clients from the Internet to use HTTPS

RewriteEngine on

RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.[0-9]+$

RewriteCond %{HTTPS} !=on

RewriteRule .* - [F]

# Allow Network Access and/or Basic Auth

Satisfy any

# Network Access Control

Order deny,allow

Deny from all

Allow 192.168.1.0/24

# HTTP Basic Authentication

AuthType basic

AuthName "Protected Intranet Area"

AuthUserFile conf/protected.passwd

Require valid-user

</Directory>

有关SSL配置apache的指令(呵呵,在/usr/local/apache/htdocs/manual/mod/mod_ssl中有更详细的解释)

1.SSLCACertificatePath

语 法:SSLCACertificatePath /to/CA/certificates

应用环境:server config ,virtual host

默认设置:none

该指令为Certificate Authority证书文件指定一个目录

2.SSLCACertificatefile

语 法:SSLCACertificatefile CA_certificate_filename

应用环境:server config ,virtual host

默认设置:none

该指令为指定一个包含Certificate Authority证书的文件

3.SSLBanCipher

语 法:SSLBanCipher Cipher

应用环境:pre-directory config(.htaccess)

使用该指令可以禁止那些想使用cipher的用户对Apache进行配置

4.SSLCacheServerPort

语 法:SSLCacheServerPort port│filename

应用环境:server config ,virtual host

该指令为全程的SSL会话缓存服务器处理过程配置TCP/IP端口或UNIX domain socket

5.SSLCacheServerPort

语 法:SSLCacheServerPath filename

应用环境:server config ,virtual host

该指令为全程的SSL会话缓存服务器的执行指令设置路径.如果你已经使用APACI配置脚本将Apache安装好了,那么缓存执行指令的文件就保存在Apache安装目录的sbin子目录中

6.SSLCertificateFile

语 法:SSLCertificateFile certificate_filename

应用环境:server config ,virtual host

该指令为一个WEB站点上的主机指定证书文件名.如果为某个虚拟主机提供SSL连通性,就需要为该虚拟主机指定一个单独的证书.

7.SSLCertificateKeyFile

语 法:SSLCertificateFile certificate_key_filename

应用环境:server config ,virtual host

该指令为证书指定一个对应的私钥文件

8 SSLEnable

语 法:SSLEnable

应用环境:server config ,virtual host

该指令用来启动SSL,该指令的使用无需参数

9 SSLDisable

语 法:SSLDisable

应用环境:server config ,virtual host

该指令用来禁止SSL,该指令的使用无需参数

10 SSLFakeBasicAuth

语 法:SSLFakeBasicAuth

应用环境:server config ,virtual host

该指令主要将用户的X509证书翻译成一个用户名,转换的用户名可用于验证

11 SSLRequireCipher

语 法:SSLRequireCipher

应用环境:pre-directory config(.htaccess)

该指令为请求密码的pre-directory列表添加一个cipher.

12 SSLogFile

语 法:SSLogFile log_filename

应用环境:server config ,virtual host

该指令使得SSL连接信息写入日志文件中.

13 SSLRequireSSL

语 法:SSLRequireSSL

应用环境:pre-directory config file ,directory

对于一个未使用的SSL连接,该命令能够禁用该连接,该指令的使用无需参数

14 SSLRequiredCiphers

语 法:SSLRequiredCiphers cipher1:cipher2:...

应用环境:server config ,virtual host,pre-directory config(.htaccess)

该指令指定一系列由冒号分隔的密码

15 SSLSessionCacheTimeout

语 法:SSLSessionCacheTimeout seconds

应用环境:server config ,virtual host

该指令为SSL会话设置缓存过期时间

16 SSLVerifyDepth

语 法:SSLVerifyDepth number

应用环境:server config ,virtual host

因为一个CA证书能够被另一个CA证书验证,所以可以形成一个CA证书链.使用该指令可指定服务器验证用户证书时可以查找多少个CA证明.

17 SSLVerifyClient

语 法:SSLVerifyClient numeric-option

应用环境:server config ,virtual host

该指令可以用来决定服务器是否需要用户证书.如果不需要用户证书,将该指令设为0,如果需要用户证书,将该指令设为2;如果用户证书需要与否可选择,则设置为1.

THE END------------------------------------------------

我想要是按照上面的步骤应该可以的,要是出错了,呵呵,那我也不知道哪里错了,我的建议是把他们三个全删了,从第二步开始重新来.当然apache功能强大,我刚刚学,先写到这吧.

本文的更多讨论在http://www.infosecurity.org.cn/forum/read.php?fid=10&tid=31&page=1

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有