【转】装apache的时候如何集成modssl的问题

根据honestqiao的帖子和myhan的文章,集合了2种方法如下: 
(各位先别着急试1和2,这些指令未必都正确;先对照一下最后面的5备注,我在最后有说明) 

1.装apache的时候静态安装modssl 
  1.1     先静态安装openssl 
          ./config 
          make 
          make install 

  1.2     后装apache,静态安装modssl,其它都动态安装(据说modssl的动态做的还不太好,所以静态) 

         ./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl=static --with-ssl=/usr/local/ssl --enable-mods-shared=all 
         make 
         make install 

2.装apache的时候动态安装modssl 
  2.1    先动态安装openssl 
         ./config 
         make 
         make build-shared 
         mv libssl.so* /usr/local/lib 
         mv libcrypto.so* /usr/local/lib 
         ldconfig 
   
   2.2   再安装apache,所有模块全动态 
         ./configure --prefix=/usr/local/apache2 --enable-ssl=shared --enable-mods-shared=all 
         make 
         make install 

3.       其它零零碎碎的东西 

      3.1   别忘了/usr/local/apache2/conf/ssl.conf的端口监听, 
只写个Listen 443可不行,443端口根本没在监听,https根本起不来。 
ip必须要填上,符合以下之一的情况 
                 Listen 0.0.0.0:443         本机所有ip(ipv4)的443端口 
                 Listen []:443            本机所有ip(ipv6)的443端口 
                 Listen xxx.xxx.xxx.xxx:443 本机ip(ipv4:xxx.xxx.xxx.xxx)的443端口 

还有本机ipv6的ip等等 
      3.2   ssl的证书必须制作,不制作,https起不来,modssl等于白给。 
(以下大段摘抄) 
对证书不熟悉的人,有一个工具可以使用:http://www.openssl.org/contrib/ssl.ca-0.1.tar.gz 
# cd /usr/local/apache2/conf 
# tar zxvf ssl.ca-0.1.tar.gz 
# cd ssl.ca-0.1 
# ./new-root-ca.sh                         (生成根证书) 
No Root CA key round. Generating one 
Generating RSA private key, 1024 bit long modulus 
...........................++++++ 
....++++++ 
e is 65537 (0x10001) 
Enter pass phrase for ca.key:              (输入一个密码) 
Verifying - Enter pass phrase for ca.key:  (再输入一次密码) 
...... 
Self-sign the root CA...                   (签署根证书) 
Enter pass phrase for ca.key:              (输入刚刚设置的密码) 
........ 
........                                   (下面开始签署) 
Country Name (2 letter code) [MY]:CN 
State or Province Name (full name) [Perak]:JiangSu 
Locality Name (eg, city) [Sitiawan]:NanJing 
Organization Name (eg, company) [My Directory Sdn Bhd]:Wiscom System Co.,Ltd 
Organizational Unit Name (eg, section) [Certification Services Division]:ACSTAR 
Common Name (eg, MD Root CA) []:WISCOM CA 
Email Address []:acmail@wiscom.com.cn 

这样就生成了ca.key和ca.crt两个文件,下面还要为我们的服务器生成一个证书: 
# ./new-server-cert.sh server              (这个证书的名字是server) 
...... 
...... 
Country Name (2 letter code) [MY]:CN 
State or Province Name (full name) [Perak]:JiangSu 
Locality Name (eg, city) [Sitiawan]:NanJing 
Organization Name (eg, company) [My Directory Sdn Bhd]:Wiscom System Co.,Ltd 
Organizational Unit Name (eg, section) [Secure Web Server]:ACSTAR 
Common Name (eg, www.domain.com) []:acmail.wiscom.com.cn 
这个服务器的Common Name可是很重要,填的不正确以后有点小麻烦 
你有真正的被承认的域名吗?有就填比如:www.SBdaxue.edu.cn 没有的话,就填ip地址就行了比如:202.202.202.202 

Email Address []:acmail@wiscom.com.cn 

这样就生成了server.csr和server.key这两个文件。 
还需要签署一下才能使用的: 
# ./sign-server-cert.sh server 
CA signing: server.csr ->; server.crt: 
Using configuration from ca.config 
Enter pass phrase for ./ca.key:             (输入上面设置的根证书密码) 
Check that the request matches the signature 
Signature ok 
The Subject's Distinguished Name is as follows 
countryName           :PRINTABLE:'CN' 
stateOrProvinceName   :PRINTABLE:'JiangSu' 
localityName          :PRINTABLE:'NanJing' 
organizationName      :PRINTABLE:'Wiscom System Co.,Ltd' 
organizationalUnitName:PRINTABLE:'ACSTAR' 
commonName            :PRINTABLE:'acmail.wiscom.com.cn' 
emailAddress          :IA5STRING:'acmail@wiscom.com.cn' 
Certificate is to be certified until Jul 16 12:55:34 2005 GMT (365 days) 
Sign the certificate? [y/n]:y 
1 out of 1 certificate requests certified, commit? [y/n]y 
Write out database with 1 new entries 
Data Base Updated 
CA verifying: server.crt <->; CA cert 
server.crt: OK 
 (如果这里出现错误,最好重新来过,删除ssl.ca-0.1这个目录,从解压缩处重新开始。) 

下面要按照ssl.conf里面的设置,将证书放在适当的位置。 
(别急ssl.conf的基本设置在后面贴,) 
# chmod 400 server.key 
# cd .. 
# mkdir ssl.key 
# mv ssl.ca-0.1/server.key ssl.key 
# mkdir ssl.crt 
# mv ssl.ca-0.1/server.crt ssl.crt 


      3.3   ssl.conf的设置 
          (注意: 以上方法好像只建立了CA根证书和服务器证书,并未建立客户端证书,因此不能进行客户端验证。客户端证书的制作应该包含在这个程序之中,大概是new-user-cert.sh和sign-user-cert.sh。也可以看看本区的其它精华,它们制作证书的方法有些不同) 

           SSLCertificateFile xxx/xxx.crt    (服务器证书的位置,就是公钥吧?后面是位置和名字)  
SSLCertificateKeyFile xxx/xxx.key (服务器私钥,后面是位置和名字)  
SSLCACertificateFile xxx/xxx.crt      (CA根证书,进行客户端验证时需要。也是一个CA公钥吧?后面是位置和名字)  

(我自己是把它们都放在apache的conf目录下了) 
  
DocumentRoot "/xxx/xx"                  (指向要ssl加密认证的文档目录,比如"/usr/local/apache/htdocs")  

SSLVerifyClient require               (去掉前面的‘#’号,进行客户端验证时需要)  
SSLVerifyDepth  1                     (去掉前面的‘#’号,把10改为1,进行客户端验证时需要) 

      3.2   运行apache 
            /usr/local/apache2/bin/apachectl startssl就运行了 
            /usr/local/apache2/bin/apachectl stop关闭 

4. 
     客户端上https的网站,以ie为例: 

客户端安装证书  


打开internet explorer(IE),工具-internet选项-内容-证书,点选'个人'  
再点击导入,把客户端证书xxx.pfx或xxx.p12导入到个人组里(别忘了扩展名是pfx)。  
这里还要输入刚才建立的输出密码hehe才能倒入呢。  

接着,点选'受信任的根证书颁发机构',点击导入,把CA根证书xxx.crt导入到受信任的根证书颁发机构里。  


#########################################################################  

好啦,重新启动apache,打开IE,  
在地址栏里输入服务器地址https://xx.xx.xx.xx或者域名,弹出个窗口要选择个人的数字证书。  
点选,然后确定。  
如果服务器证书的common name填写正确的话,你就可以直接进入网站了,看到右下角的小锁头(可靠的SSL128位)。  
如果服务器证书的common name填写不正确,就会弹出个‘安全警报’框,告诉你3条:  
     1.安全证书由信任的站点颁发  
(如果说是由不信任的站点颁发,那就是你的ca根证书ca.crt没有导入到ie的受信任的根证书颁发机构里)  

     2.安全证书的日期有效   
(这个日期缺省是10年,可以在openssl.cnf里调整修改,然后重新制作一整套证书)  

     3.“安全证书上的名称无效,或者与站点名称不匹配”  
这就是服务器证书的common name填写不正确所致,不过这也没关系,有人好像愿意这样。我是不想看到这个警告框,烦人。  

即使有安全警报,你仍能进入网站,看到右下角的小锁头(可靠的SSL128位)  


#################################  
最后,成功啦!用吧。 

5.备注: 
  5.1 apache进行configure的时候,有了--enable-mods-shared=all,就不需要--enable-so这项了。但还必须有--enable-ssl(=xxxx)!mods里缺省是不含ssl的。 
  5.2 如果静态安装modssl,那么--enable-ssl=static应该在--enable-mods-shared=all之前,否则可能出错(似乎我碰到过)。 
  5.3 如果动态安装modssl,(openssl必然也是动态安装)那么--with-ssl=/xxx/xxx/xxx这个参数就不需要了。因为动态openssl根本就没有安装目录,都成动态库了,程序会自动找到的。而--enable-ssl=shared还是需要的。 
   
   5.4  参数解释 
       ./configure --prefix=/aaa/bbb/ccc               定义安装目录  
       --enable-so                                 允许动态模块安装 
       --enable-ssl=static                           modssl静态安装  
       --with-ssl=/usr/local/ssl    安装modssl所需的openssl安装目录 
       --enable-mods-shared=all                    动态安装所有模块(modssl除外) 
       --enable-ssl=shared                           modssl动态安装 
       mv libssl.so* /usr/local/lib      把所有以libssl.so打头的文件移动到指定目录(照着做就是了)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值