openssl apache modssl安装配置调试过程.docx

上传人:b****2 文档编号:2743269 上传时间:2023-05-04 格式:DOCX 页数:28 大小:31.67KB
下载 相关 举报
openssl apache modssl安装配置调试过程.docx_第1页
第1页 / 共28页
openssl apache modssl安装配置调试过程.docx_第2页
第2页 / 共28页
openssl apache modssl安装配置调试过程.docx_第3页
第3页 / 共28页
openssl apache modssl安装配置调试过程.docx_第4页
第4页 / 共28页
openssl apache modssl安装配置调试过程.docx_第5页
第5页 / 共28页
openssl apache modssl安装配置调试过程.docx_第6页
第6页 / 共28页
openssl apache modssl安装配置调试过程.docx_第7页
第7页 / 共28页
openssl apache modssl安装配置调试过程.docx_第8页
第8页 / 共28页
openssl apache modssl安装配置调试过程.docx_第9页
第9页 / 共28页
openssl apache modssl安装配置调试过程.docx_第10页
第10页 / 共28页
openssl apache modssl安装配置调试过程.docx_第11页
第11页 / 共28页
openssl apache modssl安装配置调试过程.docx_第12页
第12页 / 共28页
openssl apache modssl安装配置调试过程.docx_第13页
第13页 / 共28页
openssl apache modssl安装配置调试过程.docx_第14页
第14页 / 共28页
openssl apache modssl安装配置调试过程.docx_第15页
第15页 / 共28页
openssl apache modssl安装配置调试过程.docx_第16页
第16页 / 共28页
openssl apache modssl安装配置调试过程.docx_第17页
第17页 / 共28页
openssl apache modssl安装配置调试过程.docx_第18页
第18页 / 共28页
openssl apache modssl安装配置调试过程.docx_第19页
第19页 / 共28页
openssl apache modssl安装配置调试过程.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

openssl apache modssl安装配置调试过程.docx

《openssl apache modssl安装配置调试过程.docx》由会员分享,可在线阅读,更多相关《openssl apache modssl安装配置调试过程.docx(28页珍藏版)》请在冰点文库上搜索。

openssl apache modssl安装配置调试过程.docx

opensslapachemodssl安装配置调试过程

openssl中ssl.conf文件中支持apachehttps的设定:

RewriteEngineOn

RewriteCond%{SERVER_PORT}!

^443$

RewriteRule^(horde)https:

//%{HTTP_HOST}/horde/[L]

RewriteRule^/(horde)https:

//%{HTTP_HOST}/horde/[L]

RewriteRule^(phpmyadmin)https:

//%{HTTP_HOST}/phpmyadmin/[L]

RewriteRule^/(phpmyadmin)https:

//%{HTTP_HOST}/phpmyadmin/[L]

RewriteRule^(acid)https:

//%{HTTP_HOST}/acid/[L]

RewriteRule^/(acid)https:

//%{HTTP_HOST}/acid/[L]

在apache中的httpd.conf文件中增加listen443

利用rewrite功能,在虚拟主机下加如下语句:

RewriteEngineon

RewriteCond%{HTTPS}!

on[NC]

RewriteRule^/erayt/ssl/(.*):

443/erayt/ssl/$1[L,R]

这样就可强制用https访问ssl目录下的所有网页.

一下载

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

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

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

二解压缩

 cd/usr/local

 tarzxvfopenssl-0.9.7e.tar.gz

 tarzxvfmod_ssl-2.8.22-1.3.33.tar.gz

 tarzxvfapache-1.3.33.tar.gz

三更改一下名字

 mvopenssl-0.9.7eopenssl

 mvmod_ssl-2.8.22-1.3.33mod_ssl

 mvapache-1.3.33apache

四编译openssl

 cdopenssl

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

 make

 makeinstall

五编译mod_ssl

 cd../mod_ssl

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

六编译apache

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

 make(易出错)

makecertificate

 makeinstall

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

七建立自己的CA

 cd/

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

 cdCAroot

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

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

 mkdirnewcerts

 mkdircerts

 mkdircrl

 mkdirprivate  

 viindex.txt   可以不写数据,直接:

wq

 viserial    写入00,然后:

wq

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

wq

 #呵呵,上面所作的这些全是根据f来的

 opensslreq-new-x509-newkeyrsa:

1024-keyout./private/cakey.pem-outcacert.pem为CA生成密钥和证书

八为apache生成密钥和证书

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

 opensslreq-new-newkeyrsa:

1024-keyout../ssl.key/server.key-out../ssl.csr/server.csr生成证书请求和密钥

 opensslca-in../ssl.csr/server.csr-outserver.crt-config/CAroot/f   用CA私钥签名证书请求

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

九修改httpd.conf

 cd..

 vihttpd.conf

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

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

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

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

十启动服务

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

 /usr/local/apache/bin/apachectlstartssl

十一从客户端测试

从局域网找个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

SSLVerifyClientrequire

SSLVerifyDepth1

SSLCACertificateFile/CAroot/cacert.pem

现在在客户端输入https:

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

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

opensslreq-new-newkeyrsa:

1024-keyout../ssl.key/client.key-out../ssl.csr/client.csr 生成证书请求和密钥

opensslca-in../ssl.csr/client.csr-outclient.crt-config/CAroot/f    用CA私钥签名证书请求

opensslpkcs12-export-clclient-inkey../ssl.key/client.key-inclient.crt-out/home/share/client.p12

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

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

2:

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

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

SSLVerifyClientnone

SSLCACertificateFileconf/ssl.crt/ca.crt

SSLVerifyClientrequire

SSLVerifyDepth1

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

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

SSLVerifyClient  none

SSLVerifyClient  require

SSLVerifyDepth  5

SSLCACertificateFileconf/ssl.crt/ca.crt

SSLCACertificatePathconf/ssl.crt

SSLOptions   +FakeBasicAuth

SSLRequireSSL

SSLRequire   %{SSL_CLIENT_S_DN_O}eq"ATR"and\

       %{SSL_CLIENT_S_DN_OU}in{"305","307","309","313"}

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

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

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

SSLCACertificateFileconf/ssl.crt/company-ca.crt

# OutsidethesubareaonlyIntranetaccessisgranted

Order     deny,allow

Deny     fromall

Allow     from192.168.1.0/24

# InsidethesubareaanyIntranetaccessisallowed

# butfromtheInternetonlyHTTPS+Strong-Cipher+Password

# orthealternativeHTTPS+Strong-Cipher+Client-Certificate

# IfHTTPSisused,makesureastrongcipherisused.

# Additionallyallowclientcertsasalternativetobasicauth.

SSLVerifyClient  optional

SSLVerifyDepth  1

SSLOptions   +FakeBasicAuth+StrictRequire

SSLRequire   %{SSL_CIPHER_USEKEYSIZE}>=128

# ForceclientsfromtheInternettouseHTTPS

RewriteEngine  on

RewriteCond   %{REMOTE_ADDR}!

^192\.168\.1\.[0-9]+$

RewriteCond   %{HTTPS}!

=on

RewriteRule   .*-[F]

# AllowNetworkAccessand/orBasicAuth

Satisfy    any

# NetworkAccessControl

Order     deny,allow

Deny     fromall

Allow     192.168.1.0/24

# HTTPBasicAuthentication

AuthType    basic

AuthName    "ProtectedIntranetArea"

AuthUserFile   conf/protected.passwd

Require    valid-user

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

1.SSLCACertificatePath

语 法:

SSLCACertificatePath/to/CA/certificates

应用环境:

serverconfig,virtualhost

默认设置:

none

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

2.SSLCACertificatefile

语 法:

SSLCACertificatefileCA_certificate_filename

应用环境:

serverconfig,virtualhost

默认设置:

none

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

3.SSLBanCipher

语 法:

SSLBanCipherCipher

应用环境:

pre-directoryconfig(.htaccess)

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

4.SSLCacheServerPort

语 法:

SSLCacheServerPortport│filename

应用环境:

serverconfig,virtualhost

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

5.SSLCacheServerPort

语 法:

SSLCacheServerPathfilename

应用环境:

serverconfig,virtualhost

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

6.SSLCertificateFile

语 法:

SSLCertificateFilecertificate_filename

应用环境:

serverconfig,virtualhost

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

7.SSLCertificateKeyFile

语 法:

SSLCertificateFilecertificate_key_filename

应用环境:

serverconfig,virtualhost

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

8SSLEnable

语 法:

SSLEnable

应用环境:

serverconfig,virtualhost

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

9SSLDisable

语 法:

SSLDisable

应用环境:

serverconfig,virtualhost

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

10SSLFakeBasicAuth

语 法:

SSLFakeBasicAuth

应用环境:

serverconfig,virtualhost

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

11SSLRequireCipher

语 法:

SSLRequireCipher

应用环境:

pre-directoryconfig(.htaccess)

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

12SSLogFile

语 法:

SSLogFilelog_filename

应用环境:

serverconfig,virtualhost

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

13SSLRequireSSL

语 法:

SSLRequireSSL

应用环境:

pre-directoryconfigfile,directory

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

14SSLRequiredCiphers

语 法:

SSLRequiredCipherscipher1:

cipher2:

...

应用环境:

serverconfig,virtualhost,pre-directoryconfig(.htaccess)

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

15SSLSessionCacheTimeout

语 法:

SSLSessionCacheTimeoutseconds

应用环境:

serverconfig,virtualhost

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

16SSLVerifyDepth

语 法:

SSLVerifyDepthnumber

应用环境:

serverconfig,virtualhost

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

17SSLVerifyClient

语 法:

SSLVerifyClientnumeric-option

应用环境:

serverconfig,virtualhost

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

今天在modssl.org的FAQ上看到可以利用mod_rewrite模块实现

如下所示,把所有连接后面带SSL的都重定向到https.

RewriteEngineon

RewriteRule ^/(.*):

SSL$ https:

//192.168.10.10/$1

利用rewrite功能,在虚拟主机下加如下语句:

RewriteEngineon

RewriteCond%{HTTPS}!

on[NC]

RewriteRule^/erayt/ssl/(.*):

443/erayt/ssl/$1[L,R]

这样就可强制用https访问ssl目录下的所有网页.

一、配置环境

1.1Tomcat简介

Tomcat是ApacheJakarta的子项目之一,作为一个优秀的开源web应用服务器,全面支持jsp1.2以及servlet2.3规范。

因其技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的web应用服务器。

1.2SSL(ServerSocketLayer)简介

在网络上信息在源-宿的传递过程中会经过其它的计算机。

一般情况下,中间的计算机不会监听路过的信息。

但在使用网上银行或者进行信用卡交易的时候有可能被监视,从而导致个人隐私的泄露。

由于Internet和Intranet体系结构的原因,总有某些人能够读取并替换用户发出的信息。

随着网上支付的不断发展,人们对信息安全的要求越来越高。

因此Netscape公司提出了SSL协议,旨在达到在开放网络(Internet)上安全保密地传输信息的目的,这种协议在WEB上获得了广泛的应用。

之后IETF(www.ietf.org)对SSL作了标准化,即RFC2246,并将其称为TLS(TransportLayerSecurity),从技术上讲,TLS1.0与SSL3.0的差别非常微小。

1.3SSL工作原理

SSL协议使用不对称加密技术实现会话双方之间信息的安全传递。

可以实现信息传递的保密性、完整性,并且会话双方能鉴别对方身份。

不同于常用的http协议,我们在与网站建立SSL安全连接时使用https协议,即采用https:

//ip:

port/的方式来访问。

当我们与一个网站建立https连接时,我们的浏览器与WebServer之间要经过一个握手的过程来完成身份鉴定与密钥交换,从而建立安全连接。

具体过程如下:

用户浏览器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送到服务器。

服务器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送给浏览器,同时发给浏览器的还有服务器的证书。

如果配置服务器的SSL需要验证用户身份,还要发出请求要求浏览器提供用户证书。

客户端检查服务器证书,如果检查失败,提示不能建立SSL连接。

如果成功,那么继续。

客户端浏览器为本次会话生成pre-mastersecret,并将其用服务器公钥加密后发送给服务器。

如果服务器要求鉴别客户身份,客户端还要再对另外一些数据签名后并将其与客户端证书一起发送给服务器。

如果服务器要求鉴别客户身份,则检查签署客户证书的CA是否可信。

如果不在信任列表中,结束本次会话。

如果检查通过,服务器用自己的私钥解密收到的pre-mastersecret,并用它通过某些算法生成本次会话的mastersecret。

客户端与服务器均使用此mastersecret生成本次会话的会话密钥(对称密钥)。

在双方SSL握手结束后传递任何消息均使用此会话密钥。

这样做的主要原因是对称加密比非对称加密的运算量低一个数量级以上,能够显著提高双方会话时的运算速度。

客户端通知服务器此后发送的消息都使用这个会话密钥进行加密。

并通知服务器客户端已经完成本次SSL握手。

服务器通知客户端此后发送的消息都使用这个会话密钥进行加密。

并通知客户端服务器已经完成本次SSL握手。

本次握手过程结束,会话已经建立。

双方使用同一个会话密钥分别对发送以及接受的信息进行加、解密。

1.4所需软件包

Tomcat4.0.2

用途:

WebServer。

下载:

http:

//jakarta.apache.org/builds/jakarta-tomcat-4.0/

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2