HTTPS实战运用
1.数字证书
数字证书是部署HTTPS站点的关键必须项,证书可以向CA机构通过付费的方式申请(也有少数免费的),也可以自己制作。
1.1自制证书
自己给自己颁发的证书,那么颁发的机构就是你自己,这无异于自圆其说,所以颁发机构作为你自己那么对于浏览器而言是不具备信任条件的,浏览器只信息一些主流权威的CA机构颁发的证书。当访问用自制证书部署的HTTPS站点时,浏览器会发出警告,说明证书不受信任且不安全。这个时候需要将我们自制的证书手动的导入的浏览器或操作系统中,并且包含到授信范围内。
1.2CA证书
CA作为权威的证书授权机构,故颁发的数字证书就称为CA证书。并且浏览器或操作系统都会内置很多CA机构,所以无需向自制证书一样进行手动的导入到浏览器或操作系统进行授信。当服务器出示CA数字证书的时候,客户端会在本地去匹配,看服务器的数字证书对应的CA机构是否包含在授信范围内的,如果是授信的浏览器则会提示安全。
2.如何在本地快速将站点部署成Https
2.1通过IIS Express实现
该方式是通过VS开发工具进行设置,并结合IIS提前导入的数字证书实现的。这种方式也是目前最快实现Https站点的方式。
操作步骤:
A.在VS中选中Web项目
B.点击F4按钮,在弹出的“项目属性”窗口中将“已启用SSL”设置为true进行保存,并将SSL URL的地址复制用于访问。
C.访问结果如图
2.2在IIS上部署
操作步骤参考动图:
2.3.对上述两种方法进行说明
之所以我们可以通过IIS Express和IIS直接部署一个HTTPS站点,这是因为IIS Express和IIS已经提前导入了一个数字证书,并且该证书用于以localhost域名访问的所有站点。
可以通过IIS管理去查看“服务器证书”界面中查看到IIS提前导入的证书,如图:
上述两种方式可以结合自身的需求自行拓展运用。
3.使用OpenSSL自制证书部署HTTPS站点
工具官网:http://slproweb.com/products.html
链接:https://pan.baidu.com/s/1uieOJgmdH-mnX0z90d5VGQ
提取码:abmw
使用步骤如下:
3.1.运行openssl
找到安装目录下bin目录下的“openssl.exe”文件,以管理员的身份打开。
3.2.创建key文件
命令格式:genrsa -out <名称>.key <密钥长度>
操作示例:genrsa -out jcxtest.key 1024
操作参考图:
命令运行成功后会在bin目录生成你创建的key文件
3.3为服务器颁发证书
A.配置主机名,找到C:\Windows\System32\drivers\etc目录下hosts文件,打开后在文件内容末尾添加本机IP并自定义主机名后保存,该主机名作为域名,证书会作用于该域名。如图:
B.指定服务器的域名结合创建的key文件,创建一个与之对应的证书文件
命令格式: req -new -x509 -key <key文件名> -out <新生成的证书文件名> -days <证书有效天数> -subj /CN=<域名/主机名>
操作示例: req -new -x509 -key jcxtest.key -out jcxtest.cer -days 365 -subj /CN=www.jcx.com
操作参考图:
命令运行成功后bin目录下会生成一个证书文件:
3.4.创建PFX文件
操作示例:pkcs12 -export -out jcxtest.pfx -inkey jcxtest.key -in jcxtest.cer
操作参考图:
命令输入后会要求你设置密码
3.5.将证书导入到IIS
步骤:
A.在IIS主页打开“服务器证书”管理界面
B.点击“导入”按钮
C.输入上述步骤中创建pfx文件的路径和密码
D.IIS导入证书成功后如图:
3.6.部署一个站点并结合以上步骤创建的证书,将站点设置成HTTPS
步骤:
A.其中设置关键项参考下图:
B.部署后对其进行访问,浏览器会出现提示不安全,如图:
出现这种情况的原因是,由于数字证书是我们自己制作的,颁发机构在浏览器或者操作系统没有相应的匹配无法对其进行信任。解决办法是,我们可以将我们自制的证书导入到浏览器并设置对其信任。
C.将证书导入到浏览器
具体操作参考以下动图:
总结:使用OpenSSL自制证书部署HTTPS站点的好处是我们无需向CA进行付费获取证书,但是在实际使用的时候,需要用户的客户端手动的导入自制证书,才能实现SSL安全机制。
小米球Ngrok 工具部署实现HTTPS站点
通过使用一款神器“小米球Ngrok”,我们无需购买云服务、域名、并且向CA付费申请数字证书,也无需进行证书的导入工作和站点的设置。直接通过下载“小米球Ngrok”工具进行配置后就可以将我们的本地电脑做为一台外网服务器,并提供对应的域名,把我们的web站点架设到互联网上以HTTPS的方式进行访问。
官方网站:http://ngrok.ciqiuwl.cn/ 大家可以直接访问官方网站并下载,然后加入到对应的QQ群里,群文件中有详细的配置视频和文档,使用起来很容易。
下面只对使用步骤做一个简单的步骤说明:
A.下载后打开目录中的ngrok.conf文件
B.打开ngrok.conf文件后我们只修改auth_token、subdomain属性即可。auth_token可以去小米球账户中心找到;subdomain是位你本地服务器生成域名的前缀,可以自定义。
参考如图:
C.在IIS服务器上部署你的站点应用,注意:部署站点以常规的HTTP的方式部署即可,部署站点的端口要与ngrok.conf文件中的端口要匹配。如你要部署HTTPS的站点,那么你的应用就必须设置为ngrok.conf配置文件中指定的8080端口。这样在访问时才会通过指定域名找到你本地服务器对应的站点。
D.打开目录中的“小米球Ngrok一键启动工具.bat”的文件,然后在命令行中输入开启的指定隧道。开启后就可以直接通过小米球分配的域名进行访问。
操作参考动图: