IIS8中使用OpenSSL来创建CA并且签发SSL证书
2014-11-26 15:50
417 查看
准备
Windows8+IIS8直接下载编译好的
Win64 OpenSSLv1.0.1eLight
安装OpenSSL之前要先装
VisualC++2008SP1Redistributables,根据系统选择
开始
第一步:安装OpenSSL
尽管我们已经安装了VisualC++2008SP1Redistributables,安装刚开始还是会提示未安装
VisualC++2008Redistributables,不管它直接点击确定
一路下一步就可以了,安装文件夹我选择
C:\OpenSSL
在
CopyOpenSSLDLLsto:的地方我选择
TheOpenSSLbinaries(/bin)directory,我不喜欢把什么DLL都往Windows目录丢,这样放在应用程序目录下比较干净
完成安装
第二步:配置OpenSSL
1、将路径C:\OpenSSL\bin\添加到系统路径中(控制面板>系统与安全>系统>高级系统设置>环境变量>系统变量>Path),这样在任何路径中都能运行OpenSSL命令2、打开openssl.cfg,修改一下配置:
dir=.#存放CA文件的文件夹,里面还需要手动建立子文件夹及件,后面会提到 default_days=10950#证书有效期,设30年比较省心 policy=policy_anything#CA资料和证书申请资料的匹配策略改为这个比较方便 countryName_default=CN#默认国家 stateOrProvinceName_default=Jiagxi#默认省份 localityName_default=Nanchang#默认城市,在localityName=LocalityName(eg,city)下增加这一条 0.organizationName_default=Kashuo#默认组织3、接着准备文件夹及文件:新建文件夹
C:\OpenSSL\bin\KashuoCA
新建文件夹
C:\OpenSSL\bin\KashuoCA\newcerts
新建文件
C:\OpenSSL\bin\KashuoCA\serial(无后缀名),里面写入
01,用来存放签发证书流水号
新建空文件
C:\OpenSSL\bin\KashuoCA\index.txt,用来存放签发证书记录4、为了省去每次运行命令都要指定openssl.cfg的麻烦,打开命令提示符(cmd.exe),将cfg文件设为系统变量:
setOPENSSL_CONF=C:\OpenSSL\bin\openssl.cfg5、重新打开命令提示符,进入KashuoCA文件夹:
cdC:\OpenSSL\bin\KashuoCA准备好以后开始下面的步骤
第三步:建立CA
命令:opensslreq-x509-newkeyrsa:1024-keyoutca.key-outca.cer参数:
req#用来生成PKCS#10格式的证书申请文件,也可以生成自签名的CA根证书 -x509#有这个参数就是生成CA根证书,没有就是生成证书申请文件 -newkeyrsa:1024#同时生成1024位RSA算法的私钥 -keyout#CA私钥 -out#证书申请文件或CA根证书由于我们之前已经设置了证书有效期和cfg文件的地址,所以在命令里就不需要重复设置了运行命令以后会要求输入私钥密码,并且再输入一次确认密码。在输入国家省份等资料的时候直接回车使用之前我们设置的默认值就可以了,但是在
OrganizationalUnitName、
CommonName和
EmailAddress三个地方没有设置默认值,因为这三个资料在CA证书和服务器证书里是不一样的。
C:\OpenSSL\bin\KashuoCA>opensslreq-x509-newkeyrsa:1024-keyoutca.key-outca.cer Loading'screen'intorandomstate-done Generatinga1024bitRSAprivatekey ...........++++++ .........................++++++ writingnewprivatekeyto'ca.key' EnterPEMpassphrase: Verifying-EnterPEMpassphrase: ----- Youareabouttobeaskedtoenterinformationthatwillbeincorporated intoyourcertificaterequest. WhatyouareabouttoenteriswhatiscalledaDistinguishedNameoraDN. Therearequiteafewfieldsbutyoucanleavesomeblank Forsomefieldstherewillbeadefaultvalue, Ifyouenter'.',thefieldwillbeleftblank. ----- CountryName(2lettercode)[CN]: StateorProvinceName(fullname)[Jiangxi]: LocalityName(eg,city)[Nanchang]: OrganizationName(eg,company)[Kashuo]: OrganizationalUnitName(eg,section)[]:KashuoCA CommonName(e.g.serverFQDNorYOURname)[]:KashuoCA EmailAddress[]:ca@kashuo.com这时候我们就有了CA根证书和私钥了!
第四步:通过IIS生成证书申请文件
由于本例中证书文件是部署在IIS中,所以通过IIS直接生成证书文件会比较方便。当然第二步中提到了通过OpenSSL的req方法也可以生成证书申请文件。1、打开IIS2、在左侧
连接中选择服务器3、在中间
主页里的
IIS中选择
服务器证书4、在右侧
操作中选择
创建证书申请5、在打开的窗口中填入以下信息:
通用名称:www.kashuo.com 组织:Kashuo 组织单位:KashuoServer 城市/地点:Nanchang 省/市/自治区:Jiangxi 国家/地区:CN通用名称里填写的域名要与该证书所绑定的网站域名一致,否则用户在浏览网站的时候会提示证书与域名不一致6、加密服务选择RSA和1024位7、最后保存证书申请的文件为
C:\OpenSSL\bin\KashuoCA\certreq.txt第五步:签发服务器证书现在,CA证书文件ca.cer、CA私钥ca.key、服务器证书申请certreq.txt三个文件都在KashuoCA文件夹下命令:
opensslca-incertreq.txt-certca.cer-keyfileca.key-outiis.cer参数:
ca#主要用来签发证书申请 -in#证书申请文件 -cert#CA证书 -keyfile#CA私钥 -out#签发的证书运行命令以后需要输入CA的私钥密码
C:\OpenSSL\bin\KashuoCA>opensslca-incertreq.txt-certca.cer-keyfileca.key-outiis.cer最后我们得到了服务器证书
UsingconfigurationfromC:\OpenSSL\bin\openssl.cfg
Loading'screen'intorandomstate-done
Enterpassphraseforca.key:
Checkthattherequestmatchesthesignature
Signatureok
CertificateDetails:
SerialNumber:1(0x1)
Validity
NotBefore:Jun1310:32:252013GMT
NotAfter:Jun610:32:252043GMT
Subject:
countryName=CN
stateOrProvinceName=Jiangxi
localityName=Nanchang
organizationName=Kashuo
organizationalUnitName=KashuoServer
commonName=www.kashuo.com
X509v3extensions:
X509v3BasicConstraints:
CA:FALSE
NetscapeComment:
OpenSSLGeneratedCertificate
X509v3SubjectKeyIdentifier:
E0:8A:69:4A:D1:0A:98:26:EA:AE:AF:5E:6D:A7:A7:C4:DE:07:13:DF
X509v3AuthorityKeyIdentifier:
keyid:37:48:69:62:0E:FD:FB:1E:83:EB:DE:2D:0D:F6:55:C1:E1:76:EF:BACertificateistobecertifieduntilJun610:32:252043GMT(10950days)
Signthecertificate?[y/n]:y1outof1certificaterequestscertified,commit?[y/n]y
Writeoutdatabasewith1newentries
DataBaseUpdated
iis.cer
第六步:在服务器上导入CA根证书
由于第三步生成的CA根证书是自签名的,并非由系统可以识别的第三方信任机构签发,所以需要将CA根证书导入到服务器中。双击ca.cer打开证书详情
点击
安装证书打开
证书导入向导
存储位置选择
本地计算机然后下一步
选择
将所有的证书都放入下列存储
点击浏览,选择
受信任的根证据颁发机构
导入完成
第七步:完成IIS证书申请
现在可以将第五步生成的iis.cer导入到IIS中了:点击第四步
创建证书申请下方的
完成证书申请
选择证书文件:
C:\OpenSSL\bin\KashuoCA\iis.cer
输入一个好记名称,如
www.kashuo.com
证书存储默认
个人
点击确定完成证书导入这个时候在服务器证书列表里就可以看到这个证书了。
第八步:打开网站的SSL设置
安装好IIS证书以后就可以打开网站的SSL设置了:在IIS左侧连接中选择
网站
在右侧
操作中点击
绑定
在打开的
网站绑定中添加一条记录:
类型选择
https
主机名填写绑定的域名,如
www.kashuo.com
证书就选择我们刚刚添加的证书
确定完成然后在中间
主页里的
IIS中选择
SSL设置,这里根据自己的需求进行设置
要求SSL:勾选以后只能通过https访问,否则http和https都可以访问
客户证书:忽略:不论客户端有没有证书都不检验
接受:如果客户端没有证书就不检验,否则弹出提示框让用户选择证书并检验证书合法性
必需:客户端必需提供合法证书才能进行访问设置完成以后点击右边
应用就可以了对于
客户证书里选择
忽略就可以,教程到这里也就结束了。客户端在访问https地址的时候会收到一个提示,即服务器证书并非由信任的第三方证书颁发机构颁发,客户端选择继续或者保存为信任的证书就可以继续访问了。如果对于安全性要求很高的网站,需要使用
客户证书里就要选择
必需,即服务端和客户端互相验证对方证书的合法性。那就还需要为客户端生成一个服务端认可的证书。
第九步:生成客户端证书申请文件
命令:opensslreq-newkeyrsa:1024-keyoutclient.key-outclient.csr参数:
req#用来生成PKCS#10格式的证书申请文件,也可以生成自签名的CA根证书第十步:签发客户端证书命令:
-newkeyrsa:1024#同时生成1024位RSA算法的私钥
-keyout#证书私钥
-out#证书申请文件
细心的你可能发现这个命令和第三步建立CA的命令差不多,区别是少了-x509参数和输出的是证书申请文件。运行命令以后输入两次客户端私钥密码,然后就是客户端的一些基本信息。最后的Achallengepassword和Anoptionalcompanyname不是必填的,我就直接回车跳过了。C:\OpenSSL\bin\KashuoCA>opensslreq-newkeyrsa:1024-keyoutclient.key-outclient.csr
Loading'screen'intorandomstate-done
Generatinga1024bitRSAprivatekey
........++++++
...++++++
writingnewprivatekeyto'client.key'
EnterPEMpassphrase:
Verifying-EnterPEMpassphrase:
-----
Youareabouttobeaskedtoenterinformationthatwillbeincorporated
intoyourcertificaterequest.
WhatyouareabouttoenteriswhatiscalledaDistinguishedNameoraDN.
Therearequiteafewfieldsbutyoucanleavesomeblank
Forsomefieldstherewillbeadefaultvalue,
Ifyouenter'.',thefieldwillbeleftblank.
-----
CountryName(2lettercode)[CN]:
StateorProvinceName(fullname)[Jiangxi]:
LocalityName(eg,city)[Nanchang]:
OrganizationName(eg,company)[Kashuo]:
OrganizationalUnitName(eg,section)[]:KashuoApp
CommonName(e.g.serverFQDNorYOURname)[]:Client
EmailAddress[]:client@kashuo.comPleaseenterthefollowing'extra'attributes
tobesentwithyourcertificaterequest
Achallengepassword[]:
Anoptionalcompanyname[]:
opensslca-inclient.csr-certca.cer-keyfileca.key-outclient.cer参数:
ca#主要用来签发证书申请 -in#证书申请文件 -cert#CA证书 -keyfile#CA私钥 -out#签发的证书签发客户端证书和签发服务器证书的命令是一样的。运行命令以后同样需要输入CA的私钥密码
C:\OpenSSL\bin\KashuoCA>opensslca-inclient.csr-certca.cer-keyfileca.key-outclient.cerclient.cer就是客户端证书了
UsingconfigurationfromC:\OpenSSL\bin\openssl.cfg
Loading'screen'intorandomstate-done
Enterpassphraseforca.key:
Checkthattherequestmatchesthesignature
Signatureok
CertificateDetails:
SerialNumber:2(0x2)
Validity
NotBefore:Jun2014:03:182013GMT
NotAfter:Jun1314:03:182043GMT
Subject:
countryName=CN
stateOrProvinceName=Jiangxi
localityName=Nanchang
organizationName=Kashuo
organizationalUnitName=KashuoApp
commonName=Client
emailAddress=client@kashuo.com
X509v3extensions:
X509v3BasicConstraints:
CA:FALSE
NetscapeComment:
OpenSSLGeneratedCertificate
X509v3SubjectKeyIdentifier:
44:C7:B1:DA:5E:36:34:8C:6F:37:17:82:BB:F2:CD:AC:69:1A:3F:41
X509v3AuthorityKeyIdentifier:
keyid:FE:79:C3:FF:9E:4F:AA:AA:8F:BD:03:19:1A:02:CD:60:27:FB:98:67CertificateistobecertifieduntilJun1314:03:182043GMT(10950days)
Signthecertificate?[y/n]:y1outof1certificaterequestscertified,commit?[y/n]y
Writeoutdatabasewith1newentries
DataBaseUpdated
第十一步:将客户端证书转换为PKCS#12格式
命令:opensslpkcs12-export-clcerts-inclient.cer-inkeyclient.key-outclient.p12参数:
pkcs12#生成或解析PKCS#12证书先输入客户端证书私钥密码,然后输入两次p12文件的导出密码
-export#生成证书
-clcerts#输出客户端证书
-in#原证书
-inkey#私钥
-out#转换后证书
C:\OpenSSL\bin\KashuoCA>opensslpkcs12-export-clcerts-inclient.cer-inkeyclient.key-outclient.p12client.p12包含客户端证书和私钥,支持浏览器直接导入,最后一步就是导入p12证书了。
Loading'screen'intorandomstate-done
Enterpassphraseforclient.key:
EnterExportPassword:
Verifying-EnterExportPassword:
第十二步:导入客户端证书
在客户端电脑导入客户端证书之前需要先导入CA根证书,将第三步生成的CA根证书文件拷贝到客户端电脑里,按照第六步的流程导入CA根证书。接着安装客户端证书,这个就比较简单了:双击client.p12打开证书详情存储位置默认
当前用户
输入p12文件的导出密码
根据个人需要勾选是否可导出密钥
自动选择证书存储就可以
大功告成!当导入客户端完成以后,客户端与服务端的双向认证SSL就搞定了!
相关文章推荐
- IIS8中使用OpenSSL来创建CA并且签发SSL证书
- IIS10中使用OpenSSL来创建CA并且签发SSL证书
- 使用Openssl生成CA及签发证书方法
- 使用OpenSSL创建CA颁发证书
- 使用openssl的CA签发证书,签名applet[换博客10年3月]
- ubuntu 14.04使用easy-rsa创建CA并签发证书
- linux学习之路之使用openssl创建私钥CA及使用CA为客户端颁发证书
- Linxu环境下如何使用Openssl搭建CA中心签发证书
- 加密解密概述及openssl应用及其创建CA和签发证书的实现
- 使用Openssl生成CA及签发证书方法
- openssl工具的使用以及创建私有CA
- linux下使用openssl创建CA及其原理
- 在企业内部使用openssl创建私有CA
- Weblogic HTTPS SSL证书制作(自己使用openssl来制作CA证书和服务器证书,自己充当CA的角色)
- 数据加密,使用openssl创建CA
- openSSL的使用及私有CA的创建
- 使用OpenSSL创建私有CA、签署证书
- SSL的认证原理及使用openssl创建CA自认证证书
- 用openssl自做CA自签发SSL证书