设为首页 收藏本站
查看: 1136|回复: 0

[经验分享] (转载)用openssl为apache制作ssl证书

[复制链接]

尚未签到

发表于 2017-1-10 11:41:35 | 显示全部楼层 |阅读模式
  因为要做个小诊所的财务管理,基于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
[ca]
default_ca=CA_own
[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
[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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-326547-1-1.html 上篇帖子: apache http server 开启ssl 与tomcat交互 下篇帖子: org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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