归档文章 (2011-2017)

date
2010/12/17
SSL:安全套接层,是netscape公司设计的主要用于web的安全传输协议。通过基于公开密钥体系的证书认证方式来确保客户端和网站服务器之间的数据安全。要实现SSL,就需要apache的SSL证书并且通过CA认证。 软件版本:Apache_2.2.10-win32-x86-openssl-0.9.8i.msi

SSL认证流程:

SSL客户端在TCP连接建立之后,发出一个消息给服务器,这个消息里面包含了自己可实现的算法列表和其它一些需要的消息,SSL的服务器端会回应 一个数据包,这里面确定了这次通信所需要的算法,然后发过去自己的证书(里面包含了身份和自己的公钥)。Client在收到这个消息后会生成一个 秘密消息,用SSL服务器的公钥加密后传过去,SSL服务器端用自己的私钥解密后,会话密钥协商成功,双方可以用同一份会话密钥来通信了。 如果对于一般的应用,管理员只需生成”证书请求“(后缀大多为.csr),它包含你的名字和公钥,然后把这份请求交给诸如verisign等有CA服务公 司,你的证书请求经验证后,CA用它的私钥签名,形成正式的证书发还给你。管理员再在web server上导入这个证书就行了。 如果你不想花那笔钱, 或者想了解一下原理,可以自己做CA。从ca的角度讲,你需要CA的私钥和公钥。从想要证书的服务器角度将,需要把服务器的证书请求交给CA. 如果你要自己做CA,别忘了客户端需要导入CA的证书(CA的证书是自签名的,导入它意味着你”信任“这个CA签署的证书)。而商业CA的一般不 用,因为它们已经内置在你的浏览器中了。

一、准备工作:

  1. 将Apache目录下conf目录中的openssl.cnf文件复制到C:
  1. 在Apache到bin目录下新建文件夹demoCA;然后在demoCA文件夹中新建newcerts文件夹。
  1. 在demoCA文件夹中新建文件index.txt,内容为空。新建iserial文件,内容为”01“。

二、实现SSL过程:

2.1、PACHE以支持SSL

编辑httpd.conf,查找下面代码,并去掉前面的#
LoadModule ssl_module modules/mod_ssl.so Include conf/extra/httpd-ssl.conf

2.2、生成服务器密钥命令:

openssl genrsa -out server.key 1024
说明:此命令将生成1024 位的RSA 私钥,得到server.key文件

2.3、生成证书请求

openssl req -new -key server.key -out server.csr
这是用步骤1的密钥生成证书请求文件server.csr, 这一步提很多问题,按要求输入

2.4、生成内部CA私钥

openssl genrsa -out ca.key 10245.利用CA私钥生成自签署CA证书
openssl req -new -x509 -days 365 -key ca.key -out ca.crt

2.5、为网站服务器签署证书

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key

2.6、结束操作

将”server.crt” server.key 复制到conf文件夹下,并重新启动 APACHE。 在IE中导入CA的证书到可信任区域,否则会报告证书不可信任!

三、特别说明:

这些证书制作仅仅供开发使用。真正要通过CNNIC签署,CSR文件格式是有比较严格的要求的。具体可以参考附件文档,为你的网站实现SSL。备注:这是一篇旧文章归档,实际发布日期为:2008-10-30
If you have any questions, please contact me.