Windows下Apache+SSL+Tomcat测试环境搭建

如果在Httpd.conf中没有设置ServerName,在启动Apache时会报Could not determine the server's fully qualified domain name, using ${yourIP} for ServerName
错。只要在Httpd.conf中增加 ServerName wangqs就可以了。

在windows中,可以在HKEY_LOCAL_MACHINE/SOFTWARE/Apache Group/Apache中找到Apache的配置信息,如果作为了Windows服务,可以在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet、Services/中找到相应的定义
配置Apache的SSL通道
需要软件:Apache2.0.59、
          Apache SSL Module注意对Apache版本的一致、
   OpenSSL(以上资源可从我的资源中下载,需要点数,呵呵)

   就是Apache增加模块的一些基本。关键点如下:
   在Httpd.conf中增加 include conf/ssl.conf(ssl.conf中对SSL Module进行了配置)
   配置SSL也就是在Apache中配置了一个虚拟主机
   对SSL的配置需要主要该虚拟主机名也即ServerName的配置,必须和服务器证书的Custom Name一致,否则报错
   在ssl.conf中指定服务器证书的位置以及私钥所在的位置。如果要求建立双向链接还需要执行CA证书的位置。如果对于通过SSL进来的请求需要发送到其他服务器,如需要经过JK发送到Tomcat,在virtualHost中增加相应的转发。
   Listen wangqs:443
   <VirtualHost wangqs:443>
       DocumentRoot "d:/data/apache/www"
              ServerName wangqs:443
              SSLEngine On
       #server cert
              SSLCertificateFile conf/server.crt
       #server private key
              SSLCertificateKeyFile conf/server.key
              ErrorLog logs/SSL.log
              LogLevel debug
              JKMount /*.srv ajp13
              JKMount /*.jsp ajp13
   </VirtualHost>


   也可以不要ssl.conf这个配置文件,直接将上面的这段虚拟主机配置信息增加到Httpd.conf文件下面
   参考 1、http://blog.ericsk.org/archives/215
        2、http://tud.at/programm/apache-ssl-win32-howto.php3
        3、http://www.choucou.com/article.asp?id=118
        4、http://www.openssl.org/docs/apps/x509.html
        5、http://dev2dev.bea.com.cn/bbsdoc/2007/03/java-soa-pass-ssl-certif.html
        6、http://www.cnblogs.com/bjrmt/archive/2006/08/01/464634.html
   如果要求客户访问时出示证书,没有证书不允许访问时,修改ssl.conf中的如下配置:
   #证书目录
   SSLCACertificatePath conf/certs
   #ca证书位置
          SSLCACertificateFile conf/certs/ca.crt
          SSLCertificateChainFile conf/certs/ca.crt
          #要求用户出示证书,参数可以取值{none, optional, require and optional_no_ca} depth根据证书签署的实际情况设置
   SSLVerifyClient require
          SSLVerifyDepth  1
   证书的生成使用openssl,简要指令如下:
   OpenSSL
产生CA自签名证书:
# genrsa [产生密钥命令] -out[密钥文件输出路径] 1024 [密钥位数]
openssl genrsa -out ca/ca-key.pem 1024

# req[产生证书命令] -new[新生成] -out[证书文件输出路径] -key[私钥文件路径]

openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem -subj $CA_DN

# x509[签发x509证书命令] -req[输入待签发证书] -in[输入待签发证书文件路径] -out[产生x509证书文件输出路径]
# -signkey[自签发密钥文件路径] -days[证书有效期]
openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 365

# 生成CA证书: ca/ca-cert.pfx, 注意一定要记住导出密码:默认为 ssl
# pkcs12[生成PKCS12格式证书命令] -export[导出文件] -clerts[仅导出client证书] -password[导出密码]
# -in[输入的client证书文件路径] -inkey[client证书密钥文件路径] -out[导出PKS12格式文件路径]

openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca-cert.pfx

#私钥
openssl genrsa -des3 -out ssl/ca.key 1024
#请求证书
openssl req -config openssl.cnf -new -key ssl/ca.key -out ssl/ca.csr
#自签名
openssl x509 -days 3650 -req -signkey ssl/ca.key -in ssl/ca.csr -out ssl/ca.crt

openssl genrsa -out ssl/server.key 1024
openssl req -config openssl.cnf -new -key ssl/server.key -out ssl/server.csr
#使用CA的私钥给服务器端证书签名
openssl ca -config openssl.cnf -days 3650 -cert ssl/ca.crt -keyfile ssl/ca.key -in ssl/server.csr -out ssl/server.crt

openssl genrsa -out ssl/client.key 1024
openssl req -config openssl.cnf -new -key ssl/client.key -out ssl/client.csr
openssl ca -config openssl.cnf -days 3650 -cert ssl/ca.crt -keyfile ssl/ca.key -in ssl/client.csr -out ssl/client.crt
openssl pkcs12 -export -clcerts -in ssl/client.csr -inkey ssl/client.key -out ssl/client.pfx

在客户端只有一条这样的证书时,不会弹出证书选择框要求用户进行证书选择,在多于一张该CA签发的证书时就会弹出证书选择框要求用户进行证书选择
如果需要在Tomcat中提取用户用来登录的证书信息,需要配置Tomcat的SSL通道,在Apache和Tomcat之间建立起单向SSL连接。Tomcat的SSL配置网上有很多相关资料,不再罗嗦,我的server.xml中配置  
<Connector port="8443"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" debug="0" scheme="https" secure="true"
               clientAuth="false" keystoreFile="D:/developEnv/server/Tomcat528/conf/server.keystore" keystorePass="111111"
        truststoreFile="D:/de

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值