最近几年,一个名为 Let’s Encrypt 的数位凭证认证机构(CA)推出免费SSL/TLS凭证服务,获得大家关注。这是什么呢?简单来说,以往想为你的网站加入 SSL 加密协议(HTTPS,也就是网址列上的绿色锁头图示),必须支付一笔费用来申请凭证,但有了 Let’s Encrypt 后将能免费申请凭证,且这一过程非常简单、自动化
证书一般分成三类: DV、OV 、和 EV ,加密效果都是一样的,区别在于:
•DV(Domain Validation),面向个体用户,安全体系相对较弱,验证方式就是向 whois 信息中的邮箱发送邮件,按照邮件内容进行验证即可通过;
•OV(Organization Validation),面向企业用户,证书在 DV 证书验证的基础上,还需要公司的授权,CA通过拨打信息库中公司的电话来确认;
•EV(Extended Validation),URL 地址栏展示了注册公司的信息,这类证书的申请除了以上两个确认外,需要公司提供金融机构的开户许可证,要求十分严格
Let’s Encrypt签发的免费证书属于DV,签名算法 sha256RSA,签名哈希算法sha256,证书有效期是90天,支持多域名和子域名,不支持通配符域名,挺适合小企业的,比如单位有个OA的web放在公网上,就可以用ssl加个密,或者VPN服务器,装个证书,可以实现SSTP VPN,exchange owa上也可以用到
这里我用windows IIS web服务器申请证书,步骤如下:
- 打开 https://www.sslforfree.com/
- 输入你要申请证书的域名,用空格来表示你要申请的多个域名,点Create Free SSL Certificate
- 接下来要域名验证,就是你申请一个www.test.com的证书,他要验证你是拥有test.com的域名,点第3个Manual Verification (DNS),然后点下面的Manually Verify Domain
- 然后你到你所在的DNS上比如阿里云什么的(我的是DNSPOD),去注册test.com域名TXT记录,他让你注册什么名字,你就注册什么名字,一般他让你注册_acme-challenge.www.test.com,对应的一串字符串贴进去
- 然后点Verify _acme-challenge.www.test.com,验证通过的话,他就会解析到刚才的那串字符串,解析不到的话,你要等下,公网DNS可能没那么快生效
- 生成证书,有两种方式,一种是自己生成,一种是让它帮你生成。如果选择第二种方式,就直接点击Download SSL Certificate,后面按照他上面的说明弄就好了。如果是第一种方式,这时候千万别点Download SSL Certificate,直接点的话,是他帮你生成私钥,有安全隐患,我们最好是自己服务器上生成私钥,所以点下面的 I have my own CSR,让IIS服务器自己生成,这时候你去IIS里,新建证书申请,注意输入的证书名字要跟你签名申请的一样,多域名的话也要一样,微软IIS里以分号分隔,一直下一步后保存CSR文件
以下是方式一自己生成的后续步骤:
- 打开刚才的CSR文件,文件名默认的话应该叫certreq.txt,
特别注意把最开始第1行的
—–BEGIN NEW CERTIFICATE REQUEST—–
和最后一行的
—–END NEW CERTIFICATE REQUEST—–
删掉,微软的证书服务器不用删,但是它这个要删掉,只贴当中一段上去 - 点Download SSL Certificate,要是前面都没错误,dns验证也通过的话,证书就签发下来了。注意这个时候,Private key里面应该是空的,说明他不知道你的私钥
- 最后把他给你的CERTIFICATE里的文字,复制到一个txt文本里,重命名成 .cer的文件,再从IIS里打开前面的证书申请,把这个.cer文件放进去就大功告成
以下是方式二它生成的后续步骤:(我用第一种方式自己本地生成报错,不知道什么原因,最后选择了下面这种方式)
下载好证书后,需要生成pfx。具体操作如下:
(在IIS配置ssl的时候,安装服务器证书,发现安装后,刷新下证书就消失了,在编辑绑定的时候,可选证书中也没有安装的证书,原因是我的证书文件的证书申请并不是在我的服务器上申请的,因此只安装crt证书会出现这种情况,解决此问题的办法是利用openssl将私钥和服务器crt证书合成.pfx证书,然后在IIS中导入该pfx证书即可)
步骤
下载安装openssl
这里我们直接使用安装包进行安装,选择对应版本进行下载
我下载的是Win64OpenSSL-1_1_0g版本
运行安装程序Win64OpenSSL-1_1_0g.exe,将openssl安装到C:\OpenSSL-Win64。
安装完成后,可以在控制台运行如下指令,来测试是否安装成功。
openssl version
如果返回openssl版本号,则表示安装成功
合成.pfx证书
将私钥文件(server.key)和服务器crt证书文件(server.crt ),放到openssl安装目录的bin目录下。
控制台也进到此目录下,然后执行下面指令。
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt
然后再看bin目录下面多了一个server.pfx 文件,即为生成的pfx证书文件
然后将pfx导入到IIS后,就可以进行绑定了。这时候会在服务器证书里面看到刚创建的证书
找到IIS需要绑定的网址,选择刚创建的证书绑定https
这里默认端口是443,如果是443,输入网址时不需要加端口号,如果是其他的,需要加上端口号。如果由于443端口被占用会导致这个网站启动不了(包括http跟https),启动时会报错,这个时候关掉443端口或者换一个端口绑定就好
到此,我们可以通过https跟http两种方式访问网址了
SSL For Free 提供订阅通知的机制,你可在前面证书申请成功的页面里填入自己的 Email,在凭证过期前就会收到电子邮件通知。他会通知3次,过期前1个星期,过期前1天,和正式过期,3个时间点发一次