设为首页 收藏本站
查看: 1260|回复: 0

[经验分享] IIS下的SSL证书配置

[复制链接]

尚未签到

发表于 2017-2-12 08:28:27 | 显示全部楼层 |阅读模式
  最近一个项目中有服务端与服务端数据交互的功能,为了保证传递数据的安全性,在数据交互的时候在发送端采用了对传输数据用证书签名,在接收端对数据进行验签;接收端连接地址使用SSL进行连接的方案。
  在项目中用SSL连接出现了很多问题,做了很多尝试,总算把问题一一解决。这里说说我在项目中SSL进行连接遇到的问题及解决方法。
  在完成主要代码后,不用SSL连接,功能都能正常,换成SSL连接后就出现一些问题。
  其中最棘手的问题是:“基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。”和“根据验证过程,远程证书无效。 ”。在网上查看了很多解决方法,有很多都自己写一段代码,对服务端证书验证总是信任,其实如果用这种方法那就没必要用SSL连接。不过在网上也获得一些收获,有部分人提示是证书的问题,证书验证失败。
  为了验证这个具体是什么原因,我在本机上搭了一个环境来测试是否因为证书的原因。(注:如果想获得正确结果推荐开发时使用IIS来调试代码,这个SSL连接的问题我在开发时在VS环境下是都OK的,但是放到客户的环境下就出错。),由于我是用.net的,所以现在先在IIS上给自己签发一张服务器证书。具体步骤如下:
  1、在IIS中的网站下,右键鼠标,在弹出的网站属性中选择目录安全选项卡,选择安全通信中的服务器证书。
DSC0000.jpg
  2、在弹出框中选择新建证书,如果你已经有一个服务器证书可以选择指派现有证书。
DSC0001.jpg

  3、接下来一般都可以一路默认。
DSC0002.jpg

  
DSC0003.jpg
  
  4、接下来要填写单位和部门,这个信息是待会制作证书必须的,所以需要记录好。
  
DSC0004.jpg
  5、接下来是SSL证书最重要的一环了,标准称呼站点公用名称,实际就是的网站地址。这个就是接收端验证服务端SSL证书的关键,也是制作证书必须的,也要记录好。
  
DSC0005.jpg
  6、接下来填写证书颁发机构要求的地理信息,这个也是证书制作必须的,要记录好。
DSC0006.jpg
 
7、填好上面的部分后就会生成一个证书签名请求CSR,里面是你之前填写的信息的Base64编码 ,默认存放到C盘下,你也可以指定位置,这个也是制作证书所必须的,要存放好。这里我命名为certreq1.txt。接下来就完成了。

DSC0007.jpg

  
DSC0008.jpg
  8、接下来就该制证了,制作只能在有签发电子证书资质的机构去制证;我这里在公司的测试RA中为自己签发一张SSL证书,具体步骤这里就不详述了。这里有个地方是要注意的,证书主题是有正序主题和逆序主题,我这个是逆序主题,根据我之前在IIS里面填的内容,我的证书的主题为:C=CN,ST=gd,L=sz,O=myca,OU=test,CN=192.168.100.113,这个是满足X509命名规则的证书主题。填完完整的信息后就该制证了,填入P10请求,就是之前生成的证书签名请求CSR,把里面内容复制到P10。
DSC0009.jpg

  9、制证完成后就可以下载证书,证书会保存为.p7b文件,里面包含一个或多个证书,一般包含本证书和它的根证书。下载保存到本地。
DSC00010.jpg

  双击打开这个文件你就可以看到:
DSC00011.jpg
里面有这次签发的SSL证书和根证书。在服务器证书上右键,选择“所有任务”->“导出”,将这张证书导出。选择DER编码二进制,导出为一个.cer文件。下一步会使用,这里我命名为113_test.cer。

DSC00012.jpg

  10、接下来在IIS里面完成之前未完成的操作。还是选择IIS网站属性里面的目录安全性选项卡,选择服务器证书,这个时候会有如下图所示:
DSC00013.jpg
 直接下一步

  
DSC00014.jpg
 选择之前导出的证书,113_test.cer。下一步就OK了。到这个地方,SSL证书就已经成功安装到了IIS中,不过需要设置才能启用。
  11、下面来启用SSL证书,指定IIS中的内容使用https来访问,接下来我们选择"目录安全选项卡"中"安全通信"中的“编辑”按钮,出现如下图的界面。如果需要网站或者虚拟目录使用https来访问,要勾选“要求安全通道(SSL)”,“客户证书”中,“忽略客户证书”则表示这个网站或者虚拟目录是单向验证,服务端不会验证客户端的证书。如果勾选“要求客户证书”则为双向,要握手成功的话,客户端要成功验证服务端证书,服务端也要验证客服端的证书。一般我们都会选择单向SSL。
DSC00015.jpg

  至此,IIS下的SSL证书就算是完成了,接下来就是验证:“基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。”和“根据验证过程,远程证书无效。 ”。这类错误提示是不是因为证书的原因造成的,我把我的SSL设置为单向验证,用192.168.100.113这个地址来访问接收端结果正常,但是换成lcalhost来访问就会提示“根据验证过程,远程证书无效。”。之后再给自己签发了一个localhost的SSL证书,用localhost来访问接收端,错误消失。
  现在结果已经很明确,出现:“基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。”和“根据验证过程,远程证书无效。 ”。这类错误只要不是粗心造成代码错误,可以确定是因为证书的问题。所以如果网站的SSL的主题是网站的URL,但是你在代码里面访问的时候使用的是IP地址,极有可能出现错误。但是在浏览器里面用IP地址加https访问网站则不受影响。
  在JAVA环境下签发及配置SSL证书也很相似,需要编写一段脚本来完成签发,这篇文章就不再赘述。下一篇文章我将记录我的服务端与服务端使用双向SSL验证及对传输数据使用证书签名的内容。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-340871-1-1.html 上篇帖子: 假期中 IIS 问题的调查结果 [转译] 下篇帖子: iis安装后无法正确运行
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表