(转载)用openssl为apache制作ssl证书
因为要做个小诊所的财务管理,基于B/S的,所以想到了用ssl加强安全性。在网上找了这么些资料,贴在这里,已备查询。一:
我用的apache版本是apache2.2.3 for windows,openssl使用的是0.9.8,这些软件可以google后下载,在windows平台或者linux平台都可以按以下命令生成证书:
步骤1:生成密钥
命令:openssl genrsa 1024 > server.key
说明:这是用128位rsa算法生成密钥,得到server.key文件
步骤2: 生成证书请求
命令:openssl req -new -key server.key > server.csr
说明:这是用步骤1的密钥生成证书请求文件server.csr, 这一步提很多问题,一一输入
步骤2: 生成证书请求
命令:openssl req -x509 -days 365 -key server.key -in server.csr > server.crt
说明:这是用步骤1,2的的密钥和证书请求生成证书server.crt,-days参数指明证书有效期,单位为天
把得到的server.key和server.crt文件拷贝到apache的对应目录,具体就不做介绍了。
转自:老黄博客
二:
SSL自签署证书生成脚本
启用 apache 的 mod_ssl 之后需要有证书才能正常运作。写了个脚本来操作。首先要确定机器上已经有 openssl 。
#!/bin/sh
#
#ssl证书输出的根目录。
sslOutputRoot="/etc/apache_ssl"
if[$#-eq1];then
sslOutputRoot=$1
fi
if[!-d${sslOutputRoot}];then
mkdir-p${sslOutputRoot}
fi
cd${sslOutputRoot}
echo"开始创建CA根证书..."
#
#创建CA根证书,稍后用来签署用于服务器的证书。如果是通过商业性CA如
#Verisign或Thawte签署证书,则不需要自己来创建根证书,而是应该
#把后面生成的服务器csr文件内容贴入一个web表格,支付签署费用并
#等待签署的证书。关于商业性CA的更多信息请参见:
#Verisign-http://digitalid.verisign.com/server/apacheNotice.htm
#ThawteConsulting-http://www.thawte.com/certs/server/request.html
#CertiSignCertificadoraDigitalLtda.-http://www.certisign.com.br
#IKSGmbH-http://www.iks-jena.de/produkte/ca/
#UptimeCommerceLtd.-http://www.uptimecommerce.com
#BelSignNV/SA-http://www.belsign.be
#生成CA根证书私钥
opensslgenrsa-des3-outca.key1024
#生成CA根证书
#根据提示填写各个字段,但注意CommonName最好是有效根域名(如zeali.net),
#并且不能和后来服务器证书签署请求文件中填写的CommonName完全一样,否则会
#导致证书生成的时候出现
#error18at0depthlookup:selfsignedcertificate错误
opensslreq-new-x509-days365-keyca.key-outca.crt
echo"CA根证书创建完毕。"
echo"开始生成服务器证书签署文件及私钥..."
#
#生成服务器私钥
opensslgenrsa-des3-outserver.key1024
#生成服务器证书签署请求文件,CommonName最好填写使用该证书的完整域名
#(比如:security.zeali.net)
opensslreq-new-keyserver.key-outserver.csr
ls-altrh${sslOutputRoot}/server.*
echo"服务器证书签署文件及私钥生成完毕。"
echo"开始使用CA根证书签署服务器证书签署文件..."
#
#签署服务器证书,生成server.crt文件
#参见http://www.faqs.org/docs/securing/chap24sec195.html
#sign.shSTART
#
#SignaSSLCertificateRequest(CSR)
#Copyright(c)1998-1999RalfS.Engelschall,AllRightsReserved.
#
CSR=server.csr
case$CSRin
*.csr)CERT="`echo$CSR|sed-e's//.csr/.crt/'`";;
*)CERT="$CSR.crt";;
esac
#makesureenvironmentexists
if[!-dca.db.certs];then
mkdirca.db.certs
fi
if[!-fca.db.serial];then
echo'01'>ca.db.serial
fi
if[!-fca.db.index];then
cp/dev/nullca.db.index
fi
#createanownSSLeayconfig
#如果需要修改证书的有效期限,请修改下面的default_days参数.
#当前设置为10年.
cat>ca.config<<EOT
default_ca=CA_own
dir=.
certs=./certs
new_certs_dir=./ca.db.certs
database=./ca.db.index
serial=./ca.db.serial
RANDFILE=./ca.db.rand
certificate=./ca.crt
private_key=./ca.key
default_days=3650
default_crl_days=30
default_md=md5
preserve=no
policy=policy_anything
countryName=optional
stateOrProvinceName=optional
localityName=optional
organizationName=optional
organizationalUnitName=optional
commonName=supplied
emailAddress=optional
EOT
#signthecertificate
echo"CAsigning:$CSR->$CERT:"
opensslca-configca.config-out$CERT-infiles$CSR
echo"CAverifying:$CERT<->CAcert"
opensslverify-CAfile./certs/ca.crt$CERT
#cleanupafterSSLeay
rm-fca.config
rm-fca.db.serial.old
rm-fca.db.index.old
#sign.shEND
echo"使用CA根证书签署服务器证书签署文件完毕。"
#使用了ssl之后,每次启动apache都要求输入server.key的口令,
#你可以通过下面的方法去掉口令输入(如果不希望去掉请注释以下几行代码):
echo"去除apache启动时必须手工输入密钥密码的限制:"
cp-fserver.keyserver.key.org
opensslrsa-inserver.key.org-outserver.key
echo"去除完毕。"
#修改server.key的权限,保证密钥安全
chmod400server.key
echo"Nowucanconfigureapachesslwithfollowing:"
echo-e"/tSSLCertificateFile${sslOutputRoot}/server.crt"
echo-e"/tSSLCertificateKeyFile${sslOutputRoot}/server.key"
#diegracefully
exit0
页:
[1]