免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5955 | 回复: 12
打印 上一主题 下一主题

这两天在Apache上安装MOD_SSL,配置HTTPS服务器一点心得!共享给 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2002-12-09 13:17 |只看该作者 |倒序浏览
最后面本来画了一个图,这里面没法显示,谁要我直接发Email给他吧!


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

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

首先我假定你已经安装好了openssl和MOD_SSL,如果你的openssl安装时
的prefix设置为/usr/local/openssl,那么把/usr/local/openssl/bin加入
执行文件查找路径。还需要MOD_SSL源代码中的一个脚本,它在MOD_SSL的
源代码目录树下的pkg.contrib目录中,文件名为 sign.sh。
将它拷贝到 /usr/local/openssl/bin 中。

第一步:先建立一个 CA 的证书,
首先为 CA 创建一个 RSA 私用密钥,
[S-1]
openssl genrsa -des3 -out ca.key 1024
系统提示输入 PEM pass phrase,也就是密码,输入后牢记它。
生成 ca.key 文件,将文件属性改为400,并放在安全的地方。
[S-2]
chmod 400 ca.key
你可以用下列命令查看它的内容,
[S-3]
openssl rsa -noout -text -in ca.key

利用 CA 的 RSA 密钥创建一个自签署的 CA 证书(X.509结构)
[S-4]
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,并放在安全的地方。
[S-5]
chmod 400 ca.crt
你可以用下列命令查看它的内容,
[S-6]
openssl x509 -noout -text -in ca.crt















第二步:下面要创建服务器证书签署请求,
首先为你的 Apache 创建一个 RSA 私用密钥:
[S-7]
openssl genrsa -des3 -out server.key 1024
这里也要设定pass phrase。
生成 server.key 文件,将文件属性改为400,并放在安全的地方。
[S-8]
chmod 400 server.key
你可以用下列命令查看它的内容,
[S-9]
openssl rsa -noout -text -in server.key

用 server.key 生成证书签署请求 CSR.
[S-10]
openssl req -new -key server.key -out server.csr
这里也要输入一些信息,和[S-4]中的内容类似。
至于 'extra' attributes 不用输入。
“Common Name: Chen Yang 你的姓名”这条信息请你输入你的服务器的域名或者IP地址,
你可以查看 CSR 的细节
[S-11]
openssl req -noout -text -in server.csr

第三步:下面可以签署证书了,需要用到脚本 sign.sh
[S-12]
./sign.sh server.csr
就可以得到server.crt。
将文件属性改为400,并放在安全的地方。
[S-13]
chmod 400 server.crt

删除CSR
[S-14]
rm server.csr

最后apache设置
如果你的apache编译参数prefix为/usr/local/apache,
那么拷贝server.crt 和 server.key 到 /usr/local/apache/conf
修改httpd.conf
将下面的参数改为:
SSLCertificateFILE /usr/local/apache/conf/server.crt
SSLCertificateKeyFile /usr/local/apache/conf/server.key

可以 apachectl startssl 试一下了
第四步:生成client端的个人证书
你需要生成一个客户端的证书,方法如下:
openssl  pkcs12  -export  -in  server.crt  -inkey  server.key  -out  public.p12  -name  "public"
openssl  pkcs12  -in  file.p12  -info  -noout (查看.p12证书文件的内容)
在客户端安装证书的方法:
安装你在第一步生成的ca.crt文件,打开web浏览器,“工具”—“Internet选项”—“内容”—“证书”选择导入证书,然后按照提示一步一步完成安装。或者你双击证书文件按照提示一步一步安装证书。
然后安装你在第三步生成的server.p12文件,方法同上。


注意的问题:
sign.sh脚本文件的内容如下:
#!/bin/sh
##
##  sign.sh -- Sign a SSL Certificate Request (CSR)
##  Copyright (c) 1998-2001 Ralf S. Engelschall, All Rights Reserved.
##

#   argument line handling
CSR=$1
if [ $# -ne 1 ]&#59; then
    echo &quot;Usage: sign.sign <whatever>;.csr&quot;&#59; exit 1
fi
if [ ! -f $CSR ]&#59; then
    echo &quot;CSR not found: $CSR&quot;&#59; exit 1
fi
case $CSR in
   *.csr ) CERT=&quot;`echo $CSR | sed -e 's/\.csr/.crt/'`&quot; &#59;&#59;
       * ) CERT=&quot;$CSR.crt&quot; &#59;&#59;
esac

#   make sure environment exists
if [ ! -d ca.db.certs ]&#59; then
    mkdir ca.db.certs
fi
if [ ! -f ca.db.serial ]&#59; then
    echo '01' >;ca.db.serial
fi
if [ ! -f ca.db.index ]&#59; then
    cp /dev/null ca.db.index
fi

#   create an own SSLeay config
cat >;ca.config <<EOT
[ ca ]
default_ca              = CA_own
[ CA_own ]
dir                     = .
certs                   = \$dir
new_certs_dir           = \$dir/ca.db.certs
database                = \$dir/ca.db.index
serial                  = \$dir/ca.db.serial
RANDFILE                = \$dir/ca.db.rand
certificate             = \$dir/ca.crt
private_key             = \$dir/ca.key
default_days            = 365
default_crl_days        = 30
default_md              = md5
preserve                = no
policy                  = policy_anything
[ policy_anything ]
countryName             = optional
stateOrProvinceName     = optional
localityName            = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional
EOT

#  sign the certificate
echo &quot;CA signing: $CSR ->; $CERT:&quot;
openssl ca -config ca.config -out $CERT -infiles $CSR
echo &quot;CA verifying: $CERT <->; CA cert&quot;
openssl verify –Cafile  ca.crt  $CERT

#  cleanup after SSLeay
rm -f ca.config
rm -f ca.db.serial.old
rm -f ca.db.index.old

#  die gracefully
exit 0
如果你在第一步生成的根证书的名字不叫ca.crt,而是其他的文件名字如:certi.crt,则你在第三步用sign.sh脚本签署你的服务器证书时也要修改sign.sh脚本里的相应文件名。






根据我的了解谈谈对apache与openssl证书的理解,
你在第二步所做的工作就是生成一个服务器证书签署请求文件,它并不是真正的服务器证书文件,你要是想得到真正的服务器证书文件有两条选择:
(一).是可以通过一个商业性CA如Verisign 或 Thawte签署证书。那么你通常要将CSR贴入一个web表格,支付签署费用并等待签署的证书。关于商业性CA的更多信息,请参见下列链接:

Verisign - http://digitalid.verisign.com/server/apacheNotice.htm
Thawte Consulting - http://www.thawte.com/certs/server/request.html
CertiSign Certificadora Digital Ltda. - http://www.certisign.com.br
IKS GmbH - http://www.iks-jena.de/produkte/ca /
Uptime Commerce Ltd. - http://www.uptimecommerce.com
BelSign NV/SA - http://www.belsign.be
(二).你在第一步生成的是一个自签署的根证书,这就相当于你自己是一个签署证书的CA机构,你可以用第一步生成的ca.crt证书来签署服务器的证书,签署的方法就是第三步用sign.sh脚本文件签署,可以返回去看看。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2002-12-09 16:03 |只看该作者

这两天在Apache上安装MOD_SSL,配置HTTPS服务器一点心得!共享给

应该加精

论坛徽章:
0
3 [报告]
发表于 2002-12-16 13:22 |只看该作者

这两天在Apache上安装MOD_SSL,配置HTTPS服务器一点心得!共享给

好东西!

论坛徽章:
0
4 [报告]
发表于 2002-12-16 13:42 |只看该作者

这两天在Apache上安装MOD_SSL,配置HTTPS服务器一点心得!共享给

怎么这么复杂。看都看不懂。怎么办?!

论坛徽章:
0
5 [报告]
发表于 2003-01-08 14:45 |只看该作者

这两天在Apache上安装MOD_SSL,配置HTTPS服务器一点心得!共享给

呵呵!

论坛徽章:
0
6 [报告]
发表于 2003-01-08 14:59 |只看该作者

这两天在Apache上安装MOD_SSL,配置HTTPS服务器一点心得!共享给

拜托“ wzy9681 ”老兄穿上衣服行不?别人以为我在浏览黄色网站!

论坛徽章:
0
7 [报告]
发表于 2003-01-08 15:06 |只看该作者

这两天在Apache上安装MOD_SSL,配置HTTPS服务器一点心得!共享给

下面引用由zdm2003/01/08 02:59pm 发表的内容:
拜托“ wzy9681 ”老兄穿上衣服行不?别人以为我在浏览黄色网站!
呵呵

论坛徽章:
0
8 [报告]
发表于 2006-09-29 10:17 |只看该作者

赞一个

受益

论坛徽章:
0
9 [报告]
发表于 2006-09-30 09:08 |只看该作者
虽然以前就会,还是认为很有价值~温顾而知新

搂主有处遗漏地方~ 现补充:

1  Include conf/extra/httpd-ssl.conf   去掉前面的#
2  SSLCertificateFILE /usr/local/apache/conf/server.crt
   SSLCertificateKeyFile /usr/local/apache/conf/server.key 写在httpd.conf下<IfModule ssl_module>与</IfModule>之间

[ 本帖最后由 chenlie39 于 2006-10-17 13:40 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2006-09-30 20:18 |只看该作者
好文章。
SSL certificate 是比较难懂,但做起来不难,做过几次就明白了。

补充两点。1。楼主文中
[S-4]
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

产生的是一个有效期约为十年的证书。如果去掉 “-days 3650”,就会
产生一个有效期为30天的证书。

2。一般情形下,不做这一步:
第四步:生成client端的个人证书

当client端浏览器以https 初次访问这一网站时, 会有窗口弹出询问是否
接受网站的证书。

另外,VeriSign 现提供免费试用的证书,大家可以体验一下安装商业证书。
https://www.verisign.com/

[ 本帖最后由 susbin 于 2006-9-30 20:29 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP