http升级https之旅
1、自制证书
商用证书必须要有域名才能用,可惜项目上没有域名,只有ip;
自制证书过程参考地址:https://www.cnblogs.com/hdwgxz/p/7857578.html
创建自签名SSL工具xca为:https://sourceforge.net/projects/xca/
自制证书包括一个根证书,一个https服务证书和一个客户端证书,如下图所示:
注:服务器上安装服务证书,需访问的客户端安装客户端证书,如果说postman要请求https接口就必须先导入对应的crt格式的客户端证书。
注:根证书设置的password要记住,在后面安装证书的过程中需要用到。
注意:::organizaName和commonName得有区分,不然证书会提示“windows没有足够信息不能验证该证书”,https网站发布时也会提示“证书链中缺少一个或多个中间证书”。
如下图,左侧为错误示例,右侧为正确示例,最终报不报错就看这一步了(都是坑!)
2、服务器证书安装
2.1 导出证书
导出的证书有多种格式,实践证明我们需要导出的是p12格式的证书,如下图所示:
2.2 证书受信
导出的p12格式证书在IIS上也是不能直接安装或者导入的,我们需要运行“certmgr.msc”,进入系统的证书管理器中将该证书导入受信区,导入过程全程默认即可(中间需输入密码),如下图所示:
2.3 证书转换
在IIS证书管理中右键“导入”的模式,可看到只支持pfx格式的证书,那么我们就需要将受信区安装的证书导出为pfx格式(中间需要输入密码),如下图:
2.4 IIS导入证书
在IIS证书管理中右键导入pfx证书,如下图:
3、https服务配置
默认的wcf服务只支持http服务,直接将原有的http服务发布为https服务,访问svc的时候就会报错,因此需要先改造原有的服务配置;
我参考的文档是这个:https://blog.csdn.net/weixin_30802273/article/details/97927699;
里面写的有点乱,经过不断尝试,其实特别简单,如下图所示:
改造之后这个服务满足了https的发布条件,就不能再次发布为http服务了。
4、https发布
一切准备就绪之后发布就简单了,只需要选择https协议,选择已安装的ssl证书即可,如下图所示:
到这一步,已经可以基于浏览器预览https服务了。
4、postman测试https服务接口
在postman中准备测试接口,才发现https服务是无法直接访问的,网上随便一查就知道该导入https客户端证书了;
参考地址:https://blog.csdn.net/weixin_44846959/article/details/113127771;
这个就简单了,选择客户端证书,导出postman需要的crt格式文件,在postman中导入即可,如下图所示:
这里的host就是发布的服务的ip和端口,下面的三类文件只需要有一个即可,我这里选的就是第一个crt文件。
如此,https接口测试成功返回数据!