当前位置: 首页 > 知识库问答 >
问题:

在使用tomcat进行SSL握手时,ServerHelloDone之后没有"匹配别名"

赖浩荡
2023-03-14

我面临着SSL握手的一个问题,当我在tomcat上托管应用程序时,客户机没有提供客户机证书,但同样的代码在独立java应用程序上运行良好。我认为这可能是Tomcat没有正确加载密钥库的问题,所以我遵循了https://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html#Configuration创建密钥库,然后添加-Djavax。网ssl。trustStore=“C:\Users\xyz.keystore”-Djavax。网ssl。trustStorePassword=“changeit”但这并不能解决问题。不知道我错过了什么。

应用代码

SSLContext ctx = null;
SSLSocketFactory socketFactory = null;
        KeyManagerFactory kmf;
KeyStore ks;
char[] passphrase = "abcd".toCharArray();

ctx = SSLContext.getInstance("TLS");
kmf = KeyManagerFactory.getInstance("SunX509");
ks = KeyStore.getInstance("JKS");

ks.load(new FileInputStream("C:/goahead.jks"), passphrase);

kmf.init(ks, passphrase);

ctx.init(kmf.getKeyManagers(), null, null);

socketFactory = ctx.getSocketFactory();
String endpoint = "https://myurl/goahead";
BindingProvider bindingProvider = (BindingProvider) goSOAP;    //goSOAP is derived from wsdl soap class
bindingProvider.getRequestContext()
.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpoint);
bindingProvider.getRequestContext()
.put("com.sun.xml.internal.ws.transport.https.client.SSLSocketFactory", socketFactory); 

为了比较这两个日志,我添加了用于ssl握手的调试日志,我看到的唯一区别如下:Tomcat应用程序显示:

Accept: application/soap+xml, multipart/related
Content-Type: application/soap+xml; charset=utf-8;action="/Address"
User-Agent: JAX-WS RI 2.2.10 svn-revision#919b322c92f13ad085a933e8dd6dd35d4947364b

其中,独立应用程序显示:

Accept: [application/soap+xml, multipart/related]
Content-Type: [application/soap+xml; charset=utf-8;action="/Address"]
User-Agent: [JAX-WS RI 2.2.4-b01]

在接近尾声时,独立应用程序

*** ServerHelloDone
matching alias: goaheaduat
*** Certificate chain

基于tomcat的应用程序没有匹配的别名:

尚未将客户端证书提供给服务器进行身份验证。

***我的证书链。找到的密钥为:goaheaduat链[0]=[[版本:V3主题:CN=WebKYCTest.servicepartnerconsumer.com,OU=ISS-3PTY,O=JabongS签名算法:SHA256withRSA,OID=1.3.340.314509.9.0.32

密钥: Sun RSA公钥,2048比特模数:27573819147946213043216108193871654407922029181865423070240388390082203239203276484533998399141937338366712797583606436874669271136184327404678172471800553725661929882862711783147991980007784094228604257987704412377010220942071292525488807622245786848032603065210767423710596079119175986038958679485985173914183400986232704952684194291691771747100348011779606334479154902757588018357364139623723065756491506767148994346890208737770932855458704848837399114296416887151154418561578978073777312232789403716198956145390511813892730740350579365196627658126157277478693917625969224935645208986859585794507961203141704075579公共指数: 65537有效性:[出发地:美国东部时间2016年5月03 15:03:50日星期二,收件人:美国东部时间2019年4月22 15:33:49日星期一]发行人: CN=委托认证机构-1K,OU="(c)2012 EnTrust, Inc.-仅供授权使用", OU=参见www.entrust.net/legal-terms, O="EnTrust, Inc.", C=US SerialNumber:[1051555d65348b53 00000000 50d7ff44]

***克利恩塞洛,TLSv1:GMT:1451756012字节={109、25、125、234、72、78、180、84、205、146、231、249、138、99、17、154、171、146、144、41、1、15、203、209、38、255、236、148}会话ID:{}密码套件:(TLS)是一个宗教信仰的人,他们是一个宗教信仰的人,他们是一个宗教信仰的人,他们是一个宗教信仰的人,他们是一个宗教信仰的人,他们是一个宗教信仰的人,他们是一个宗教信仰的人,他们是一个宗教信仰的人,他们是一个12 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 CBC C C C C沙,他们是沙,他们是他们是他们,他们是他们是一个10 10 10 10 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 E_ECDSA_与_RC4_128_SHA,TLS_ECDHE_RSA_与_RC4_128_SHA,SSL_RSA_与_RC4_128_SHA,TLS_ECDH_ECD我们的研究结果是一个有着12个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个沙,沙,我们的沙,我们的沙,我们的一个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个8个3DES_EDE_CBC_SHA,SSL_DHE_DSS_与CBC_SHA,SSL_RSA_与RC4_128_MD5,压缩方法:{0}扩展椭圆曲线,曲线名称:{secp256r1,SECP163K1,SECP123R2,secp192r1,SECP24R1,SECP233K1,SECP233R1,SECP281R1,secp384r1,SECP409K1,secp521r1,SECP571K1,secp160k1,secp160r2,SECP163R1,secp192k1,SECP193R1,SECP24K1,SECP239K1,secp256k1}扩展ec_点格式,格式:[未压缩]

找到关键字: goahead uat链[0] = [ [ 版本: V3主题: CN=WebKYCTest.servicepartnerconsumer.com, OU=ISS-3PTY, O=JabongS签名算法: SHA256 with RSA, OID=1.3.340.314509.9.0.32

密钥: Sun RSA公钥,2048比特模数:27573819147946213043216108193871654407922029181865423070240388390082203239203276484533998399141937338366712797583606436874669271136184327404678172471800553725661929882862711783147991980007784094228604257987704412377010220942071292525488807622245786848032603065210767423710596079119175986038958679485985173914183400986232704952684194291691771747100348011779606334479154902757588018357364139623723065756491506767148994346890208737770932855458704848837399114296416887151154418561578978073777312232789403716198956145390511813892730740350579365196627658126157277478693917625969224935645208986859585794507961203141704075579公共指数: 65537有效性:[出发地:美国东部时间2016年5月03 15:03:50日星期二,收件人:美国东部时间2019年4月22 15:33:49日星期一]发行人: CN=委托认证机构-1K,OU="(c)2012 EnTrust, Inc.-仅供授权使用", OU=参见www.entrust.net/legal-terms, O="EnTrust, Inc.", C=US SerialNumber:[1051555d65348b53 00000000 50d7ff44]

服务器名称,服务器名称:[主机名称:it internalservicepartner.jabong dns.com]

超文本传输协议-Bio-127.0.0.1-80-exec-1, WRITE: TLSv1握手,长度=199超文本传输协议-Bio-127.0.0.1-80-exec-1, READ: TLSv1握手,长度=16384***服务器你好, TLSv1随机Cookie: GMT: 1451756012 bytes={33, 109, 178, 249, 102, 30, 1, 105, 194, 42, 88, 10, 247, 104, 93, 45, 166, 230, 141, 49, 180, 154, 198, 251, 76, 170, 162, 49}会话ID:{87, 136, 10, 236, 32, 220, 206, 169, 30, 219, 131, 106, 24, 37, 117, 192, 116, 56, 195, 254, 29, 197, 185, 155, 141, 192, 95, 152, 23, 143, 14, 114}密码套件:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA压缩方法: 0扩展renegotiation_info,renegotiated_connection:

%%已初始化:[会话17,TLS_ECDHE_RSA_与_AES_128_CBC_SHA]**TLS_ECDHE_RSA_与_AES_128_CBC_SHA***证书链

*ECDH ServerKeyExchange服务器密钥:Sun EC公钥,256位公共x坐标:689506881343195318829010659438588275970342039234172934409373318994857259424公共y坐标:1035654361791302525467318332021691039103859157668603542556238032190750005197048参数:secp256r1[NIST P-256,X9.62 prime256v1](1.2.840.10045.3.1.7)http-bio-127.0.0.1-80-exec-1,读作:TLSv1握手,长度=1760*证书请求证书类型:RSA、DSS、ECDSA证书颁发机构:**ServerHelloDone

共有1个答案

滕无尘
2023-03-14

服务器有一个信任库,在这个信任库中是客户端的公共证书。只有当信任库中客户端的此公共证书没有颁发者,或者信任库中至少有一个颁发者时,它才与别名匹配。

请参阅上的源代码https://github.com/openjdk-mirror/jdk7u-jdk/blob/master/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java#L374

       if (issuers.length == 0) {
            // no issuer specified, match all
            aliases.add(alias); <--- this is important
            if (debug != null && Debug.isOn("keymanager")) {
                System.out.println("matching alias: " + alias);
            }
 类似资料:
  • 问题内容: 这是“ 使用自签名证书和SSLEngine(JSSE)进行SSL握手 ”的后续问题。 我实现了一个NIO Web服务器,该服务器可以在同一端口上处理SSL和非SSL消息。为了区分SSL消息和非SSL消息,我检查了入站请求的第一个字节,看看它是否是SSL / TLS消息。例: 在parseTLS()方法中,我实例化了一个SSLEngine,启动了握手,包装/展开消息等。对于大多数现代We

  • 我在这个问题上纠缠的时间比我想承认的要长。我正在尝试使用postgres db连接来完成我在liberty上的小型spring mvc项目。My server.xml如下所示。 我尝试过通过所有方法连接到postgres,例如:datasource和connectionmanager 即使在从后记数据库连接页面提供 root.crt 后,我仍不断得到 [err]org . PostgreSQL .

  • 我试图通过SSL连接(在我的独立应用程序和Tomcat提供的其他应用程序之间发送一些数据): 不幸的是,我的独立应用程序中出现了一个错误: 原因:javax。网ssl。例外:太阳。安全验证器。ValidatorException:PKIX路径生成失败:sun。安全供应商。certpath。SunCertPathBuilderException:无法在com上找到请求目标的有效证书路径。太阳网ssl

  • 我正在尝试使用SSL证书将java客户端与JMX服务器连接。 但是不幸的是,这个连接给出了一个SSL握手错误。当我尝试使用< code >-DJ avax . net . debug = all 标志对此进行调试时,我在java客户端上得到以下错误消息。 2016-07-15T13:29:50.02-0700[APP/0]退出RMI更新清洁-[10.200.0.27:44445,javax.rmi

  • 我目前在AWS中使用Gatling加载测试我的服务。我使用HTTP做了几次负载测试,我的服务工作得很好。没有TLS握手错误。当我们移动到HTTPS时,负载测试结果显示TLS握手超时异常到处都是,最后因为未处理的请求排队而抛出OOM。 其他信息: Gatling场景如下:发送三个请求,然后使用头发送一个请求。我想模拟发送三个保持活动状态的请求,并在最后关闭它 我的服务由Kubernetes管理 我所

  • 我必须在Tomcat(操作系统: MS Windows)上调试SSL握手,所以我按照在Web中找到的说明启用了以下行setenv.bat: 设置"JAVA_OPTS=%JAVA_OPTS%-Djavax.net.debug=ssl" 使用Apache Tomcat/9.0.0。M21一切正常,当我用浏览器打开页面时,我可以看到命令行上的握手。 使用Apache Tomcat/9.0.0。M22我只