HTTPS是啥就没得说了,基于SSL的HTTP
然后呢,如果要在服务器上启用HTTPS,需要一个CA证书
CA证书分几种:
域名型SSL证书(DV SSL):信任等级普通,只需验证网站的真实性便可颁发证书保护网站;
企业型SSL证书(OV SSL):信任等级强,须要验证企业的身份,审核严格,安全性更高;
增强型SSL证书(EV SSL):信任等级最高,一般用于银行证券等金融机构,审核严格,安全性最高,同时可以激活绿色网址栏。
作者:李是个好人
链接:https://www.zhihu.com/question/19578422/answer/114210307
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
所以咱一般搞一个DV的就行
本来打算做一个自己签名的证书,毕竟主要是为了加密
但是自己签名的证书浏览器不认,提示证书不安全啥的(不要客户端导入证书到信任才可以),加上ios访问的时候会提示不被信任,不能访问,所以放弃了
环境:我们是给客户的服务器安装证书,客户那边是一个二级域名被定向到我们的一台内网服务器,服务器是Windows Server2008 IIS7+
记录--这里是签一个受信的域名证书
- 找一个SSL证书颁发机构,我找的是StartSSL
- 在网站上验证对域名的所有权,这个我尝试了两个机构的验证方式,都是使用WhoIs查询当前域名的注册信息,通过邮箱来验证的,这个如果是自己的网站,一般联系人是自己,直接接受验证码就好,我们是找客户要的联系邮箱接收的验证码。我还试了一下GEOTrust,这个好像是可以通过在网站上放一个文件,文件名是MD5,内容是SHA1,这个在提交信息之后会给你,能通过你提交的域名访问到就可以认证,但是这个免费的只有90天,所以我就没继续了。
- StartSSL的话,提交验证码之后就可以生成一个免费的证书,可以用三年,然后将就可以把证书下载下来,导入到iis就可以了(当然这里的证书IIS是不认的,可以跳过下面这一段,直接看最后)
当然真做起来当然是没有这么简单了,对需要受信证书的同学来说,以下这一段是废话,可以跳过。。。
我一开始的时候是想弄一个自签名的证书,所以搜索了好久,网上也看到了好多的教程,最终找到了一个OpenSSL证书生成(Windows环境),本来以为就水到渠成了,照着做一遍就ok,但是现实打了脸,首先这东西需要用到OpenSSL,我机器上没有,然后还要用Perl,我试了一下,安装了Perl,也下载了OpenSSL,然后发现这东西需要现编译才能用,我要崩溃了,,,但是!感谢互联网,我又找到了教程Win32下VC编译OpenSSl,好吧,按照教程来一遍,应该就可以了吧。。。然后发现,他用的是VC命令行编译,恩,我连VC开发环境都没有,我机器上装了(或者装过)VS2012,VS2013,VS2015,所以我以为VC是小意思,结果。。。恩,你们知道了,不好使……感谢廖雪峰大佬的教程,我找了半天,终于找到了这个,直接来了一个shell脚本,恩,Linux的……所以,我又稍微的失望了一下,接下来用实验楼的这个功能,可以用一个在线的Linux环境,将刚刚廖雪峰教程里头的脚本粘贴到Linux环境下,修改执行权限,直接执行就可以生成一个自签名的证书。我以为到这里我的行程就改结束了。。。但是还没有。。。拿到了crt文件,然后发现iis无法导入,说这个缺少key,好吧好吧,然后我又找到了这个文章SSL证书转换。至此,我已经搞定了所有需要做的事情。得到一份脚本:
#!/bin/sh
# create self-signed server certificate:
read -p "Enter your domain [www.example.com]:" DOMAIN
echo "Create Server Key..."
openssl genrsa -des3 -out $DOMAIN.key 1024
echo "Create server certificate signing request..."
SUBJECT="/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=$DOMAIN"
openssl req -sha256 -new -subj $SUBJECT -key $DOMAIN.key -out $DOMAIN.csr
echo "Remove password..."
mv $DOMAIN.key $DOMAIN.origin.key
openssl rsa -in $DOMAIN.origin.key -out $DOMAIN.key
echo "Sign SSL certificate..."
openssl x509 -sha256 -req -days 3650 -in $DOMAIN.csr -signkey $DOMAIN.key -out $DOMAIN.crt
openssl pkcs12 -export -out $DOMAIN.pfx -inkey $DOMAIN.key -in $DOMAIN.crt
echo "Done"
以上,执行一遍,输入六次密码就可以生成一个自签名的CA证书.pfx文件(IIS就认这个),注意这个密码不要忘记了,导入的时候要用(按理说前面的跟后面的可以不一样,因为中间有一步是删除密码,但是都输入同一个密码肯定不会出错就是了)。
接到废话之前的内容,从StartSSL上申请到证书以后,下载的文件是crt文件,这个IIS是不认的,所以我们需要把crt文件和key文件合并起来,如果需要知道详细内容,请参考废话内容
反正我最后得到这样一份脚本
#!/bin/sh
# create self-signed server certificate:
read -p "Enter your domain [www.example.com]:" DOMAIN
echo "Create Server Key..."
openssl genrsa -des3 -out $DOMAIN.key 1024
echo "Create server certificate signing request..."
SUBJECT="/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=$DOMAIN"
openssl req -sha256 -new -subj $SUBJECT -key $DOMAIN.key -out $DOMAIN.csr
echo "Done"
输入一个域名,输几次密码,就可以生成.key文件和.csr文件,这个文件内容可以粘贴到StartSSL的申请里面,然后我们就有了一个key文件和一个受信任的.crt证书,现在,参考废话里面的脚本,将这两个文件放在一起,执行最后一句
openssl pkcs12 -export -out [DOMAIN].pfx -inkey [DOMAIN].key -in [DOMAIN].crt
[DOMAIN]需要替换成你的文件名,然后就得到了一个受信任的.pfx文件,这下真的可以导入到IIS中了
最后,实验楼是不允许上传文件的,所以如果是自签名的证书,直接用它就可以,如果不是自签名的,不好意思,我最后是被逼的没办法,只好装了一个Ubuntu(据说OpenSSL一般发行版Linux都会装,经过我的实验,Ubuntu是装了的),如果你能搞定Windows环境下安装编译OpenSSL,可以来教一下我。