Chinaunix首页 | 论坛 | 博客
  • 博客访问: 214574
  • 博文数量: 43
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 660
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-11 11:49
文章分类

全部博文(43)

文章存档

2009年(39)

2008年(4)

我的朋友

分类: 系统运维

2009-05-12 10:04:44

网上找了很多文章,再加上自己的一些体会,希望对看的人有所帮助。

一、编译openSSL

网上有很多编译文章,但可能因为openSSL版本的原因,编译中会有很多问题,所以建议下个旧点的版本,这里用的是openssl-0.9.8i.tar.gz.

1、下载ActivePerl-5.8.0.806-MSWin32-x86.msi

   因为编译openssl需要perl配置其文件,下载后,双击安装,默认安装目录C:\Perl
    2、安装完Perl后,配置windows下的编译环境
       解压openssl,使用VS2008下的Visual Studio 2008 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量),进入openssl目录下
       A)Perl Configure VC-WIN32
       B)ms\do_ms

   C)nmake -f ms\ntdll.mak
         开始编译,如果编译成功,最后的输出在out32dll目录下
    提示:如果找不到nmake,dos下进入安装C:\Program Files\Microsoft Visual Studio 9.0\VC的目录,找到vcvars32.bat,运行它。
    网上的文章基本在执行这个命令时没有问题,但我在编译时出现各种找不到文件的问题,最后换了现在这个版本才没问题,郁闷!
    也可以试试下面的办法:
    注意:在运行第五步时,cl编译器会抱怨说.\crypto\des\enc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码 error C2220,于是上MSDN上查找:
warning treated as error - no object file generated
/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.
是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。

于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。。。
继续执行nmake -f ms\ntdll.mak

 

二、用openSSL制作证书

1.获取IIS证书请求:打开IIS,右键单击【默认网站】,在【目录安全性】选项卡中点击【服务器证书】按钮,【下一步】,【新建证书】,【现在准备证书请求--下一步】,输入【名称】,输入【单位】和【部门】,输入【公用名称】,选择【国家】并输入【省】和【市县】并【下一步】,【下一步】,【下一步】,【完成】,IIS的证书请求已经获取,就是C:\certreq.txt。这里请牢记输入的信息。


    2.准备openssl工作环境:在e盘上新建Security\openssl098e两个文件夹,把编译后的openssl中的out32dll文件夹复制到openssl098e下,在openssl098e下新建bin文件夹,在bin下建立目录demoCA,在demoCA下建立private和newcerts目录,并新建index.txt,把编译后的openssl\apps\demoCA下的serial文件,拷贝到demoCA目录下,两个目录两个文件都放到新建的demoCA下;再把编译后的openSSL\apps下的openssl.cnf文件考到openssl098e下(如果没有,建议换一个openSSL版本)。

 

3.生成自签名根证书:openssl req -x509 -newkey rsa:1024 -keyout cakey.pem -out cacert.pem -days 3650 -config e:\Security\openssl098e\openssl.cnf


    PEM pass phrase:根证书密码,当然很重要!
    Country Name: CN //两个字母的国家代号
    State or Province Name: guang dong //省份名称
    Locality Name: guang zhou //城市名称
    Organization Name: sunrising //公司名称
    Organizational Unit Name: home //部门名称
    Common Name: besunny //你的姓名
    Email Address: Email地址

以上信息除了Email以外,所有内容都要和客户端请求的内容一致。

提醒:这时候,已经有cakey.pem:ca的私钥文件,cacert.pem:ca的自签名根证书,certreq.txt:IIS的证书请求文件,三个文件。现在将certreq.txt拷贝到bin目录下。把cakey.pem 拷贝到bin\demoCA\private, 把cacert.pem拷贝到out32dll\demoCA和bin\demoCA下(好象只有后面那个有用)。

 

4.用CA证书cacert.pem为IIS请求certreq.txt签发证书:server.pem:
openssl ca -in certreq.txt -out server.pem -config e:\Security\openssl098e\openssl.cnf
如果不行,试用下面的语句,指定cakey.pem的路径:
openssl ca -keyfile E:\Security\openssl098e\bin\demoCA\private\cakey.pem -in certreq.txt -out server.pem -config

e:\Security\openssl098e\openssl.cnf

执行完后,得到server.pem文件。

 

5.把server.pem转换成x509格式:
      openssl x509 -in server.pem -out server.cer


  又得到server.cer文件。现在把server.cer复制到c:下。

 

三、在IIS中倒入证书。
将生成的证书server.cer导入到IIS:打开IIS,在【默认网站】上单击右键【属性】,在【目录安全性】选项卡中点击【服务器证书】按钮,【下一步】,选择【处理挂起的请求并安装证书】并【下一步】,正常情况下,您已经看到了文本框中就是c:\server.cer,如果不是,自己点【浏览】按钮去找并【下一步】,【下一步】,【完成】。回到【目录安全性】选项卡在【安全通信】栏目中单击【编辑】按钮,勾上【要求安全通道(SSL)】,点击【确定】按钮。

阅读(834) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~