LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3127|回复: 3

IE https 证书认证问题

[复制链接]
发表于 2007-6-26 13:15:14 | 显示全部楼层 |阅读模式
我做了https服务, 生成了 client 和 CA 的证书,分别为ca.crt和client.pfx

在firefox 中将ca.crt和client.pfx导入, 双向认证成功

而在IE中, 同样导入,client.pfx导入到“个人”, ca.crt导入到 ""受信任的根证书颁发机构"  认证不成功.  查看证书时看到如下信息:
"因为证书路径中的证书颁发机构似乎没有颁发证书的权限或不能被用作终端实体证书,证书无效"

使用IE的情况下, 查看 httpd的 ssl日志 (ssl_request_log)时 根本没有分身任何信息

我现在还没有找出原因,有相似经历的朋友请给一下提示, 高手请帮忙  谢谢
发表于 2007-6-26 22:08:31 | 显示全部楼层
ca.crt 自己签名了没的?(虽然是很废话)。

有没有选择证书的作用?。
回复 支持 反对

使用道具 举报

发表于 2007-6-27 18:35:19 | 显示全部楼层
不会呀`````````````
回复 支持 反对

使用道具 举报

发表于 2007-7-10 20:31:25 | 显示全部楼层
在redhat 9.0下一步一步编译安装Apache 1.3.27+mod_ssl的过程

安装过程:

1 下载所需的软件包
   apache_1.3.31.tar.gz http://apache.linuxforum.net/dist/httpd/apache_1.3.31.tar.gz
   
     mod_ssl-2.8.19-1.3.31.tar.gz    http://www.modssl.org/source/mod_ssl-2.8.19-1.3.31.tar.gz

     openssl-0.9.7d.tar.gz   http://www.openssl.org/source/openssl-0.9.7d.tar.gz

2  安装openssl
    openssl 是mod_ssl 必需的软件包
    tar zxvf openssl-0.9.7d.tar.gz
      cd openssl-0.9.7d
      ./config (请看清楚,不是一般的configure 它自己的是config)
       make
       make install  
  
将openssl安装到/usr/local/ssl

3 将mod_ssl 配置进apache

   tar zxvf mod_ssl-2.8.19-1.3.31.tar.gz

   tar zxvf  apache_1.3.31.tar.gz

    cd mod_ssl-2.8.19-1.3.31

[root@host5 mod_ssl-2.8.19-1.3.31]# ./configure --with-apache=../apache_1.3.31 --with-ssl=/usr/local/ssl/  --prefix=/usr/local/apache

  Configuring mod_ssl/2.8.19 for Apache/1.3.31
+ Apache location: ../apache_1.3.31 (Version 1.3.31)
+ OpenSSL location: /usr/local/ssl/
+ Auxiliary patch tool: ./etc/patch/patch (local)
+ Applying packages to Apache source tree:
   o Extended API (EAPI)
   o Distribution Documents
   o SSL Module Source
   o SSL Support
   o SSL Configuration Additions
   o SSL Module Documentation
   o Addons
Done: source extension and patches successfully applied.

Configuring for Apache, Version 1.3.31
+ using installation path layout: Apache (config.layout)
Creating Makefile
...........................................

Creating Makefile in src/main
Creating Makefile in src/modules/standard
Creating Makefile in src/modules/ssl

Now proceed with the following commands:
$ cd ../apache_1.3.31
$ make
$ make certificate
$ make install

[root@host5 mod_ssl-2.8.19-1.3.31]#

当大家看到以上的东西后,mod_ssl 已经加到了apache的源代码中,按照提示本来就应该直接到apache_1.3.31下面编译就可以使用apache 了,但是我发现这样编译后的apache 不具有动态模块加载(DSO)功能,那么来说,你的apache1.3.31只具备静态网页的功能(当然,你也可以用perl 来写CGI程序实现动态网页)其实DSO有很多好处,比如你可以加装PHP......等

4、编译和安装Apache 1.3.31

刚才提到为什么我们不按照指示去做呢,就是因为我们要把Apache 1.3.31编译成DSO模式。如果你单单想编译成静态模式的话,就直接在apache 1.3.27 目录下make 就OK了。
下面是把apache 1.3.31 编译成DSO模式。

./configure --prefix=/usr/local/apache --enable-module=so --enable-module=ssl  --enable-shared=max --enable-module=rewrite

so模块用来提供DSO支持的apachehe核心模块,rewrite是地址重写的模块,如果不需要可以不编译 enable-shared=max是指除了so以外的所有标准模块都编译成DSO模块,ssl就是我们今天最重要的东西mod_ssl 模块

make

到此,apache 1.3.31+mod_ssl 已经编译完成,下面的是生成CA证书。

make certificate TYPE=custom,此处应该选一种生成证书的类型,我选custom,自己定义)

make install

启动并测试/usr/local/apache/bin/apachectl startssl

5 安装自己的证书

虽然在安装MOD_SSL时已经使用 make certificate 命令建立了服务器的证书签名,但是有时你可能需要改变它。

当然有很多自动的脚本可以实现它,但是最可靠的方法是手工签署证书.

1、先建立一个 CA 的证书
首先为 CA 创建一个 RSA 私用密钥。

cd /usr/local/apache

mkdir ssl 建立临时的目录

cd ssl

/usr/local/ssl/bin/openssl genrsa -des3 -out ca.key 1024


系统提示输入 PEM pass phrase,也就是密码,输入后牢记它。生成 ca.key 文件,将文件属性改为400,并放在安全的地方。

你可以用下列命令查看它的内容,

/usr/local/ss/bin/openssl rsa -noout -text -in ca.key

2、利用 CA 的 RSA 密钥创建一个自签署的 CA 证书(基于X.509协议)
   /usr/local/ssl/bin/openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
然后需要输入下列信息:
Country Name: cn 两个字母的国家代号
State or Province Name: An Hui 省份名称
Locality Name: Bengbu 城市名称
Organization Name: Family Network 公司名称
Organizational Unit Name: Home 部门名称
Common Name: Chen Yang 你的姓名
Email Address: sunstorm@263.net Email地址
生成 ca.crt 文件,将文件属性改为400,并放在安全的地方

你可以用下列命令查看它的内容,

/usr/local/ssl/bin/openssl x509 -noout -text -in ca.crt

3、接着创建服务器证书签署请求,
为 Apache 创建一个 RSA 私用密钥:

/usr/local/ssl/bin/openssl genrsa -des3 -out server.key 1024


4、用 server.key 生成证书签署请求 server.csr 文件
/usr/local/ssl/bin/openssl req -new -key server.key -out server.csr
这里也要输入一些信息,和前面的内容类似
A challenge password []: ? (这两个地方不用输入,直接敲回车)
An optional company name []:?(同上)

5、签署证书
需要用到脚本 sign.sh

sign.sh是MOD_SSL源代码中的一个脚本,它在MOD_SSL的
源代码目录树下的pkg.contrib目录中,文件名为 sign.sh。
将它拷贝到 /usr/local/ssl/bin 中

/usr/local/ssl/bin/sign.sh  server.csr

就可以得到server.crt

至此,证书生成完毕。
现在需要做的工作是把server.crt 和server.key 拷贝到httpd.conf 里mod_ssl指定的位置,分别是/usr/local/apache/ssl.crt/server.crt 和/usr/local/etc/apache/ssl.key/server.key

注意检查一下httpd.conf中关于ssl的设置

SSLCertificateFILE usr/local/apache/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/etc/apache/ssl.key/server.key

可以 apachectl startssl 试一下了

由于安全的原因,Web服务器的私钥是口令加密了的,每次重新起动HTTPD或Linux时,都会要求输入Web服务器的私钥的口令。

  如果要解除HTTPD起动时的口令输入,可以这样

     # cd /usr/local/apache/conf/ssl.key

  # cp server.key server.keyold
  # openssl rsa -in server.keyold -out server.key
  # chmod 400 server.key

此时,Web服务器的私钥已经没有口令加密,一定要确保server.key文件除root外,任何用户均无权读取它。

参考资料:

http://www.cnfug.org/journal/archives/000029.html
http://www.cnfug.org/journal/6/04.html
http://www.fanqiang.com/a6/b8/20010722/1305001004.html



另外一种使用自己认证的SSL证书进行认证的方法

首先,我们要有进行简单SSL认证的三个要件:
私钥、公钥、经认证的证书
上述三个要件的创建,需要用到此命令 /usr/local/ssl/bin/openssl
第一步:创建私钥文件 privkey.pem 和证书签署请求文件 server.csr

       # openssl  req -new  -out   server.csr ↙

按提示输入初始的私钥密码(>4字节)两次输入确认无误
再按提示输入证书签署请求的主要信息:国家、省、市、公司、部门、通用名等......
注意:通用名项必填
Common Name ( eg, your name or your server's hostname) []:
可在:号后填写我们的服务器主机名 mypage.com.cn
通用名项后面几项可以直接↙不填
通过上步后,在当前目录下产生了 privkey.pem 和 server.csr 两个文件
第二步:创建公钥文件 every.key
# openssl  rsa  -in  privkey.pem  -out  every.key ↙

按提示输入第一步中我们自己设定的私钥密码,正确则显示 ‘writing RSA key'
通过上步后,在当前目录下又产生了 every.key 文件
第三步:对认证签署请求进行认证,得到认证证书 zheng.crt

# openssl x509 -in server.csr -out zheng.crt -req -signkey every.key - days 365 ↙

经过此步,我们最终得到了最后一个文件,经认证的证书 zheng.crt
最后,我们要将公钥文件 every.key 和 证书文件 zheng.crt 的完全路径分别写在Apache 配置文件中的 Server Private key: 下 sslcertificatekeyfile 项和 Server Certificate:下 sslcertificatekeyfile 项中。
重新启动Apache 后,从443端口登录服务器主页时,
在弹出的授权认证对话框中点击 ‘检查证书'。便可看到发行者标识为 mypage.com.cn 的证书说明。接受此证书,就完成通过我们自己认证的SSL证书查看主页内容了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表