LINUX DOTNET      Linux DotNET 中文社区

Linux .NET编程与应用技术之专业网站:www.linuxdot.net !     返回首页    
   
[楼主] 关于抛出The authentication or decryption has failed异常

上周在群里问过的问题:“centos7-1611-minimal中,使用通用版jexus站点httpwebrequest可以正常访问https,独立版jexus的就会抛出The authentication or decryption has failed异常。程序里已经加了证书检查恒为true处理。”

尝试过的方案:
http://www.cnblogs.com/jjg0519/p/7253671.html
要想在Linux中用HttpWebRequest或WebClient访问远程https路径,需要作如下处理:
1,更新linux根证书(只需一次,在安装mono或安装jexus独立版后执行)
sudo mozroots --import --ask-remove
(独立版是:sudo /usr/jexus/mozroots --import --ask-remove)
2,在web程序中,在运行https请求之前的某个地方,比如Global.asax的Application_Start方法中添加一句:
System.Net.ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => { return true; };
没能成功。

继续自己啃:
测试工具:mono自带的tlstest.exe
不管用yum安装的mono,还是用Jexus独立版中的jwss,在处理tomcat https(jre keytool生成的证书)请求时,基本上都会抛"Mono.Security.Protocol.Tls.TlsException: The authentication or decryption has failed."异常。
经调试发现Mono内部的错误信息是“AlertDescription.HandshakeFailiure: Unable to negotiate an acceptable set of security parameters given the options available.”
原因是证书解析失败。
尝试用openssl生成的证书配置tomcat https,应该是哪个环节没做对,最终没能成功。

最终解决方案是在tomcat(http)基础上,再加一层nginx(https,ca是用openssl生成的),这回可以正常解析证书了。服务程序也正常运行了。

不过还是不甘心。有空继续研究。

作者:然   发布时间:17年12月19日   可选操作:删除 回复

 
   
   

留言回复:
标题: * 标题必填
作者:   * 请填上你的名字  
操作键:   * 填入几个字母表示是您写的,便于进一步操作
发言内容:
 
发贴者须知:
1、您无需注册即可发贴,但是,贴子内容必须在法律法规和社会公德所允许的范围内;
2、本站专注IT技术,谢绝包括政治、社会、情感等任何与IT技术无关的贴子在本站发表;
3、本站保留对任何贴子进行删除、禁用、更改、举报、追究等所有权利;
 
今天是: 周七  周二  周一  周三  周四  周五  周六