cas要求,castjava
如果您想要启用tomcat的https方法,您必须首先创建一个证书。使用的工具是jdk中的keytool。它的用法就不多说了,无处不在。
使用keytool创建证书时的第一个问题是:你叫什么名字(其实是中文!),这个时候自然要回答自己的名字。配置完成后,用浏览器访问,一切正常。但是当使用http客户端编写程序进行访问时,问题就出来了。
一般表达式如下:
javax . servlet . servlet异常:HTTPS主机名错误:应为本地主机
根本原因
Java . io . io异常:HTTPS主机名错误:应为本地主机
看到这个问题,可以猜测是证书问题。但我无论如何也猜不出证书有什么问题。事实上,令人难以置信的是,错误在于创建证书的第一个问题——你的名字。其实这个“名”应该是域名。比如本地主机或者blog.devep.net。如果你输入你的名字,当你实际运行它时,它与域名不匹配。当然,你会犯错误。浏览器无所谓,弹出一个对话框,用户点一下就可以了。但是http客户端直接抛出了上面的错误。
两篇文章的作者已经解释了https主机名错误的原因和解决方法。经过一些验证,发现这种异常可以通过以下黑客手段避免。在使用HTTPS协议访问之前,添加以下代码:
system . set property( Java . protocol . handler . pkgs , javax . net . SSL );
hostname verifier HV=new hostname verifier(){
公共布尔验证(字符串urlHostName,SSLSession会话){
返回URL hostname . equals(session . getpeerhost());
}
};
httpsurlconnection . setdefaulthostname verifier(HV);
这样就可以正常访问了。注意HostnameVerifier和HttpsURLConnection的导入包是javax.net.ssl,不是com.sun.net.ssl如果所有ip都可以认证,甚至可以直接在verify中返回true!当然,这是不建议的。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。