wingger 回复于:2005-01-10 09:17:53 |
UP!!!!!!!!救命 |
q1208c 回复于:2005-01-10 09:24:42 |
你的做法好象有点问题. 是不是 https 根本就用不了? |
wingger 回复于:2005-01-10 09:33:18 |
我的服务起来了,服务端也要求必须提供证书才能浏览,只是安装的证书有问题,不知道是不是签的时候有错 |
东方蜘蛛 回复于:2005-01-10 13:33:03 |
帮忙顶顶。。。。 |
一起走过的日子 回复于:2005-01-10 13:36:29 |
http://www.csdn.net/develop/article/15/15178.shtm 参考下先 :em02: |
wingger 回复于:2005-01-20 16:36:56 |
我做好了,呵呵,下面是我写的笔记,转载请注明作者名:wingger 本文章在LINUX9+apache2.0.52,tomcat5.5.6,j2se1.5,openssl0.97上实验通证 本文的目的是为了交流,如有出错的地方,请指教 转载请注明出处,并保持文章的完整性 现在开始安装 首先在安装之前要明白一些基本概念 1、SSL所使用的证书可以是自己建的生成的,也可以通过一个商业性CA如Verisign 或 Thawte签署证书。 2、证书的概念:首先要有一个根证书,然后用根证书来签发服务器证书和客户证书,一般理解:服务器证书和客户证书是平级关系。在SSL必须安装根证书和服务器证书来认证。 因此:在此环境中,至少必须有三个证书:即根证书,服务器证书,客户端证书 在生成证书之前,一般会有一个私钥,同时用私钥生成证书请求,再利用证书服务器的根证来签发证书。 3、签发证书的问题:我最近找了很多关于openssl的资料,基本上只生成了根证书和私钥及服务器证书请求,并没有真正的实现签证。我这里参考了一些资料,用openssl自带的一个CA.sh来签证书,而不是用MOD_ssl里的sign.sh来签。 用openssl语法来生成证书,有很多条件限定,如目录,key的位置等,比较麻烦,我实验了好几天,最后放弃了。有兴趣的可以参考一下openssl手册。 [b:52clearcase/" target="_blank" >cc239c9f]步骤一:安装openssl和apache[/b:52cc239c9f] 1、到www.openssl.org下载openssl-0.9.7e.tar.gz(目前最新版) 2、卸载掉老的opensll库 [code:1:52cc239c9f]#rpm –e –-nodeps openssl [/code:1:52cc239c9f] 3、解压: [code:1:52cc239c9f]#tar xzvf openssl-0.9.7e.tar.gz[/code:1:52cc239c9f] 4、进入openssl目录,并安装,用--prefix指定openssl安装目录 [code:1:52cc239c9f]#cd openssl-0.9.7e #./config --prefix=/usr/local/openssl #make #make test #make install [/code:1:52cc239c9f] 5、安装apache 至www.apache.org/dist下载apache最新版httpd-2.0.52.tar.gz 解压后进入apache目录,根据需要安装需要的模块,我这里装了ssl,rewrite,动态模式安装 [code:1:52cc239c9f]#tar zxvf httpd-2.0.52.tar.gz #cd httpd-2.0.52 #./configure --prefix=PREFIX --enable-ssl --enable-rewrite --enable-so --with-ssl=/usr/local/openssl #make #make install[/code:1:52cc239c9f] [b:52cc239c9f]步骤二:签证[/b:52cc239c9f] 安装openssl后,在openssl下有一个CA.sh文件,就是利用此文件来签证, 来签三张证书,然后利用这三张证书来布SSL服务器。 1、在/usr/local/apache/conf下,建立一个ssl.crt目录,将CA.sh文件copy至/usr/local/apache/conf/ssl.crt/目录 [code:1:52cc239c9f][root@win ssl]# cp /usr/local/openssl/ssl/misc/CA.sh /usr/local/apache/conf/ssl.crt/CA.sh[/code:1:52cc239c9f] 2、运行CA.sh -newca,他会找你要CA需要的一个CA自己的私有密钥密码文件。如果没有这个文件?按回车会自动创建,输入密码来保护这个密码文件。之后会要你的一个公司信息来做CA.crt文件。最后在当前目录下多了一个./demoCA这样的目录../demoCA/private/cakey.pem就是CA的key文件啦,./demoCA/cacert.pem就是CA的crt文件了 [code:1:52cc239c9f][root@win ssl.crt]# ./CA.sh -newca[/code:1:52cc239c9f] 要求输入如下信息: [quote:52cc239c9f]Country Name (2 letter code) [GB]:CN State or Province Name (full name) [Berkshire]:FUJIAN Locality Name (eg, city) [Newbury]:FUZHOU Organization Name (eg, company) [My Company Ltd]:FJJM Organizational Unit Name (eg, section) []:FD Common Name (eg, your name or your server's hostname) []:WIN Email Address []:WIN@WIN.COM[/quote:52cc239c9f] 这样就建好了一个CA服务器,有了一个根证书的私钥cakey.pem及一张根证书cacert.pem,现在就可以cacert.pem来给签证了 3、签署服务器证书 生成服务器私钥: [code:1:52cc239c9f][root@win ssl.crt]# openssl genrsa -des3 -out server.key 1024[/code:1:52cc239c9f] 生成服务器证书请求 [code:1:52cc239c9f][root@win ssl.crt]# openssl req -new -key server.key -out server.csr[/code:1:52cc239c9f] 会要求输入信息 [code:1:52cc239c9f]Country Name (2 letter code) [GB]:CN State or Province Name (full name) [Berkshire]:FUJIAN Locality Name (eg, city) [Newbury]:FUZHOU Organization Name (eg, company) [My Company Ltd]:FJJM Organizational Unit Name (eg, section) []:FD Common Name (eg, your name or your server's hostname) []:WIN Email Address []:WIN@WIN.COM Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:WIN An optional company name []:WING[/code:1:52cc239c9f] 最后把server.crt文件mv成newreq.pem,然后用CA.sh来签证就可以了 [code:1:52cc239c9f][root@win ssl.crt]# mv server.csr newreq.pem [root@win ssl.crt]# ./CA.sh -sign[/code:1:52cc239c9f]这样就生成了server的证书newcert.pem 把newcert.pem改名成server.crt [code:1:52cc239c9f][root@win ssl.crt]# mv newcert.pem server.crt[/code:1:52cc239c9f] 4、处理客户端: 生成客户私钥: [code:1:52cc239c9f][root@win ssl.crt]# openssl genrsa -des3 -out client.key 1024[/code:1:52cc239c9f] 请求 [code:1:52cc239c9f][root@win ssl.crt]# openssl req -new -key client.key -out client.csr[/code:1:52cc239c9f] 签证: [code:1:52cc239c9f][root@win ssl.crt]# openssl ca -in client.csr -out client.crt[/code:1:52cc239c9f] 把证书格式转换成pkcs12格式 [code:1:52cc239c9f][root@win ssl.crt]# openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx[/code:1:52cc239c9f] 5、这时就有了三张证书和三个私钥,一个是demoCA下的根证书,ssl.crt下的服务器证书和客户证书。及demoCA/private下的根key,ssl.crt下的服务器key和客户key,在conf下的ssl.conf下指定证书的位置和服务器key的位置. 我是在conf下建立一个ssl.crt目录,并将所有的key和证书放到这里 [code:1:52cc239c9f]#cp demoCA/cacert.pem cacert.pem[/code:1:52cc239c9f] 同时复制一份证书,更名为ca.crt [code:1:52cc239c9f]#cp cacert.pem ca.crt[/code:1:52cc239c9f] 步骤三、编辑ssl.conf [code:1:52cc239c9f]#cd /usr/local/apache/conf[/code:1:52cc239c9f] 编辑ssl.conf [code:1:52cc239c9f]指定服务器证书位置 SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt 指定服务器证书key位置 SSLCertificateKeyFile /usr/local/apache/conf/ssl.crt/server.key 证书目录 SSLCACertificatePath /usr/local/apache/conf/ssl.crt 根证书位置 SSLCACertificateFile /usr/local/apache/conf/ssl.crt/cacert.pem 开启客户端SSL请求 SSLVerifyClient require SSLVerifyDepth 1[/code:1:52cc239c9f] 启动ssl [code:1:52cc239c9f]/usr/local/apache/bin/apachectl startssl[/code:1:52cc239c9f]会要求输入server.key的密码 启动,这样一个默认的SSL服务器及http服务器就启动了, [b:52cc239c9f]步骤四、安装和使用证书[/b:52cc239c9f] 把刚才生成的证书:根证书ca.crt和客户证书client.pfx下到客户端,并安装, ca.crt安装到信任的机构,client.pfx直接在windows安装或安装到个人证书位置,然后用IP访问HTTP和https服务器。 |
wingger 回复于:2005-01-20 16:46:31 |
我现在有一个问题:我想和tomcat整合,然后SSL按控制。有没有办法 目前我整合用,用8080也用访问到我的SSL目录 |
山中无老虎 回复于:2005-01-20 17:18:57 |
wingger,上次说话不客气了些,sorry again。Because I don't know that you are a G。以后要多向你请教哟。:) |
xuhehao 回复于:2005-01-20 18:03:44 |
Wingger是我见到做技术做到专业化的头一个Girl,其他的做技术的女孩现在都转行做管理去了。。 :roll: adoring&pursuing |
foolkaka 回复于:2005-02-22 19:16:50 |
当OpenSSL提示您“CommonName”时,确保你输入了服务器的FQDN("Fully Qualified Domain Name" ,即,当您为一个以后用https://www.foo.dom/访问的网站生成一个CSR时,这里输入"www.foo.dom"。 否则会发生证书验证的时候(跳出来一个对话框) 有一个感叹号 第三项:该安全证书上的名称无效,或与站点名称不匹配 (黄色叹号) |
水中风铃 回复于:2005-02-22 19:23:28 |
[quote:a5718a545c="foolkaka"]当OpenSSL提示您“CommonName”时,确保你输入了服务器的FQDN("Fully Qualified Domain Name" ,即,当您为一个以后用https://www.foo.dom/访问的网站生成一个CSR时,这里输入"www.foo.dom"。 否则会发生证书验证..........[/quote:a5718a545c] https://DomainName要和证书里的CommonName项对应吧!表示是为 DomainName发的证书? |
foolkaka 回复于:2005-02-22 19:28:56 |
对 |
denisming 回复于:2005-03-25 13:57:15 |
为什么我用FreeBSD配一点效果都没有。。。 还提示我服务起了~用https访问却连个提示要证书的没,直接打不开。 求救一下 |
floriawll 回复于:2005-04-21 17:18:57 |
怎么会出现这样的问题呢?不用验证就可以打开页面了。 |