IIS证书配置。。这究竟是为什么

解决一个难题有时候比一帆风顺的做完要爽得多。。

昨天跟着identityserver4教程做demo,前面几步正常,到写demo客户端连接认证的时候卡住了。

打开client的Development模式,页面显示的错误是证书错误。

端口问题?

但是在identityserver4这边,也开始我看到了重定向地址不匹配的错误,我的IIS配置的是9012端口,而日志显示的是44332。
我搜索了整个工程,发现只有launchsettings.json里有这个地址,但是发布到IIS后,显然不应该会有相关信息了。
不管如何,将这个地址也改成9012,并且在Startup中配置了https重定向选项


            services.AddHttpsRedirection(options =>
            {
                options.HttpsPort = 9012;
            });

再发布,再client页面看到的错误没变,不过identityserver没有显示什么异常了。

其实后来反过头想,可能原来server端异常是我在vs调试时碰到的异常,并不是这次的log,不过没有再深究。

证书错误?

因为无论是client还是server的页面,在浏览器中打开,浏览器都提示连接安全,所以我一直没有认为真的时证书问题,还是找Identityserver的问题。

换证书-IIS

知道我在一个论坛帖子里(看了太多的解决方案,已经不记得是哪个了),有人说他删除并且重新添加一下证书就好了。

抱着死马当活马医的心态,我删除了iis的证书,重新在IIS里生成自签名证书,配置到identityserver中,这下好了,浏览器都提示证书不安全了。

我将新生成的证书挪到受信任根证书颁发者中,浏览器依旧不识别,当然,之前的错误还在。

重新生成证书-命令

想了想为什么,发现可能实证书颁发的subject是我的计算机名称,而网站地址我的是localhost,不匹配。

不过又发现IIS生成的自签名证书,竟然不能改CN字段。。无奈又去网上搜索,不想重新下载什么openssl之类的,最终发现powershell有生成自签名证书的功能:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

重新生成这个证书,在IIS中给identityserver的证书配置为这个(注意,只有存储在My这个区域的证书IIS才能看到)。

最后将证书在证书管理器(contana搜索栏输入cert就能找到)中,将证书复制到受信任根证书颁发者中。

重新启动服务器,好了!

结论

其实还是不知道为什么,之前的证书按道理也绝对是好的。。。

posted @ 2020-03-31 21:08  mosakashaka  阅读(318)  评论(0编辑  收藏  举报