UPDATE 1/26/2015 -- It appears the most recent JRE/JDK for Java 8 (update >= 31) and JRE/JDK for Java 7 now include the Godaddy G2 CA server in the default trust store. If possible, it's urged you upgrade your JRE/JDK to the latest Java 8 update to resolve this issue.
2014年11月29日更新-
这仍然是一个问题,Godaddy似乎不在乎也不会对此做任何事情。几个月前,Godaddy安全产品副总裁在这里发表了一篇博客文章,指出正在修复该问题,并提供了一种临时解决方法,但是到目前为止,没有任何变化。重要的是要注意,Godaddy的G2
CA服务器已经存在至少5年了,在那时,Godaddy尚未采取适当的步骤来解决此已知问题。提供的解决方法仅是一种解决方法,而不是解决方案。第三方服务的用户对证书在服务器上的安装方式几乎没有任何控制。
It seems users should avoid purchasing Godaddy SSL certs until they get serious about being a CA.
如果您愿意致电以下是他们的SSL小组的联系信息:
GoDaddy SSL Team Support Number: 1-480-505-8852 -- Email: ra@godaddy.com
2014年9月17日更新-
这仍然是一个问题,Godaddy似乎不在乎也不会对此做任何事情。当Google在11月弃用所有SHA-1证书时,这将成为一个主要问题。我强烈建议任何可以联系Godaddy并将其指向此处的人。
〜
tl;dr; - final update with current solution/workaround at the bottom of this post (it is a GoDaddy problem and there is a workaround until they fix it)
我有一个邮件服务器,试图从Java应用程序发送邮件。我可以在端口25上成功发送,因此我知道代码可以正常工作,但是25不是加密的会话。我需要在需要SSL证书的端口587上使用TLS。我在由GoDaddy
G2 CA签名的服务器上有一个有效的SSL证书,并且已经放置了一段时间(没有问题)。
我的问题是PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
,尝试在587上连接和发送邮件时,我收到了著名的错误消息。
根据我对许多SO链接以及普通google-fu的理解,这通常是Java不信任证书或CA时引起的-
这是自签名证书的常见现象。我已经使用了几个在线SSL证书检查器来确保该链是有效的,等等。所有这些看起来都是正常的……但是java不会自动使用该证书。
我知道Sun的某个地方有一个类文件,该文件将在本地密钥库中下载并设置证书,因此Java会信任它…但这不仅对于要部署到多个系统的应用程序是不切实际的,对于Godaddy签名证书很傻。
这是怎么回事?如何使Java在服务器上使用有效证书 而不 需要让Java接受所有证书?
编辑:我只是看了我的Windows Java控制面板(默认安装的jdk 7),并且肯定,在Signer CA
发行者:The Go Daddy Group, Inc. Go Daddy Class 2 Certification Authority
下列出了…那么,给出了什么呢?我的证书是Godaddy证书…
UPDATE --
这是注释中推荐的openssl命令所见的证书链:
~]# openssl s_client -connect smtp.somecompany.com:587 -starttls smtp
CONNECTED(00000003)
depth=2 C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", CN = Go Daddy Root Certificate Authority - G2
verify error:num=19:self signed certificate in certificate chain
verify return:0
---
Certificate chain
0 s:/OU=Domain Control Validated/CN=smtp.somecompany.com
i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
1 s:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./CN=Go Daddy Root Certificate Authority - G2
2 s:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./CN=Go Daddy Root Certificate Authority - G2
i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./CN=Go Daddy Root Certificate Authority - G2
3 s:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./CN=Go Daddy Root Certificate Authority - G2
---
我认为我看起来还不错…
UPDATE 2 --
好的,感谢@Bruno,我能够确定我的链条被弄乱了-我重新设置了服务器的密钥,现在我的链条显示为:
~]# openssl s_client -connect smtp.somecompany.com:587 -starttls smtp
CONNECTED(00000003)
depth=2 C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", CN = Go Daddy Root Certificate Authority - G2
verify error:num=19:self signed certificate in certificate chain
verify return:0
---
Certificate chain
0 s:/OU=Domain Control Validated/CN=smtp.somecompany.com
i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
1 s:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./CN=Go Daddy Root Certificate Authority - G2
2 s:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./CN=Go Daddy Root Certificate Authority - G2
i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./CN=Go Daddy Root Certificate Authority - G2
---
看起来比以前更好。-Java仍然对证书路径等抛出相同的异常。因此,默认情况下,似乎在Java 7的默认密钥库中仍不信任G2证书链。
FINAL UPDATE FOR COMPLETENESS @ 1/14/2014
只是作为更新-这确实是GoDaddy的问题(我已经收到了很多与他们联系的支持电子邮件)。它们有2个CA服务器,一个称为Class 2 CA
,另一个称为G2 CA
。他们在Class 2 CA
所有SHA-1
证书上签名,同时在他们所有的证书上G2 CA
签名SHA-2
。这就是问题所在-GoDaddy尚未将其新G2 CA
服务器添加到默认的Java信任库中-
导致默认的Java安装不信任它的权限,因此不信任您的链接证书。GoDaddy将G2 CA
服务器添加到默认信任库之前的解决方法是,仅使用SHA-1
as来对证书进行密钥更新,以获取Class 2 CA
服务器签名的证书。在您的证书过期之前(显然),GoDaddy客户可以免费重新键入密码。
UPDATE 1/26/2015 -- It appears the most recent JRE/JDK for Java 8 (update >= 31) and JRE/JDK for Java 7 now include the Godaddy G2 CA server in the default trust store. If possible, it's urged you upgrade your JRE/JDK to the latest Java 8 update to resolve this issue.
2014年11月29日更新-
这仍然是一个问题,Godaddy似乎不在乎也不会对此做任何事情。[here][1]
Godaddy安全产品副总裁几个月前发表了一篇博客文章,指出正在修复该问题,并提供了一种临时解决方法,但到目前为止,没有任何变化。重要的是要注意,Godaddy的G2
CA服务器已经存在至少5年了,在那时,Godaddy尚未采取适当的步骤来解决此已知问题。提供的解决方法仅是一种解决方法,而不是解决方案。第三方服务的用户对证书在服务器上的安装方式几乎没有任何控制。
It seems users should avoid purchasing Godaddy SSL certs until they get serious about being a CA.
如果您愿意致电以下是他们的SSL小组的联系信息:
GoDaddy SSL Team Support Number: 1-480-505-8852 -- Email: ra@godaddy.com
2014年9月17日更新-
这仍然是一个问题,Godaddy似乎不在乎也不会对此做任何事情。当Google在11月弃用所有SHA-1证书时,这将成为一个主要问题。我强烈建议任何可以联系Godaddy并将其指向此处的人。
~~~~
我最初的帖子/问题是关于为什么我的连锁店不起作用。很明显,我的设置不好(通过@Bruno等人的一些建议很快将其修复-
谢谢)。但是,当我更正的链仍然无法使用Java时,很明显潜伏着一个更大的问题。花了一段时间,但问题实际上出在GoDaddy上。
实际上,这确实是GoDaddy的问题(我已经收到了很长的支持电子邮件)。
它们有2个CA服务器,一个称为Class 2 CA
,另一个称为G2 CA
。他们在Class 2 CA
所有SHA-1
证书上签名,同时在他们所有的证书上G2 CA
签名SHA-2
。
这就是问题所在-GoDaddy尚未将其新G2 CA
服务器添加到默认服务器Java truststore/keystore
-导致默认Java安装不信任它的权限,因此不信任您的链接证书。
在GoDaddy将G2 CA
服务器添加到默认信任库/密钥库之前,解决方法是使用as-来简单地对证书进行密钥更新SHA-1
,以获取Class 2 CA
服务器签名的证书。在您的证书过期之前(显然),GoDaddy客户可以免费重新键入密码。
一旦服务器SHA-1
签署了证书Class 2 CA
,您的信任链便会按预期工作,并且不需要自定义信任库/密钥库导入和/或设置。
我必须使用“较弱”的证书才能使其正常工作并不能令我感到高兴,到目前为止,通过电子邮件支持与GoDaddy进行的讨论表明,他们目前尚无将G2 CA
服务器添加到默认信任库/密钥库的计划。 。我猜想直到他们添加它之前,SHA-1
Class 2 CA
如果您打算使用Java
,请确保获得服务器签名的证书。
所以我管理域 britoanderson.com,我试图让ssl工作。我使用证书机器人为两个w制作证书。子域和主 britoanderson.com 域。我将云版本设置为“完整”加密模式。出于某种原因,SSL证书适用于 https://www.britoanderson.com/ 但不能用于网站拒绝打开 https://britoanderson.com/。 以下是我的nginx默认文件: 主域
我正在使用spring(4.2.0.RELEASE)、hibernate validator(5.2.1.Final)和validation api(1.1.0.Final)对后端应用程序进行JSR验证,配置如下:, 但是没有一个JSR303注释在我的应用程序中工作。 注意:在POJO类上添加了JSR303注释,在服务类(使用POJO)上添加了@Validated注释,还尝试在方法级别添加@Val
我尝试使用以下uri连接到mongo: 蒙戈'mongodb://mongoadmin:mxmxmxmxm@服务器:27017/?tls=真 但无论如何,服务器验证证书: 2020-07-30T09:06:59.250-0400 E网络[js]SSL对等证书验证失败:证书信任失败:CSSMERR_TP_NOT_TRUSTED;连接被拒绝2020-07-30T09:06:59.250-0400 E查
我正在尝试使用Hibernate Validator 5.0.1和JSF2.2,但自mojarra版本2.2.3以来,它们的集成似乎被破坏了。我创建了一个小应用程序来演示这个问题,并获得异常“javax.servlet.ServletException:表达式错误:命名对象:未找到javax.faces.Bean”在Tomcat 7.0.42上运行时。 还有其他人有这个问题吗? webapp/页面
我正在尝试在我的Jenkins工具中配置LDAP身份验证。我已经在Jenkins上完成了以下LDAP身份验证的设置,但我仍然无法登录。 服务器:ldaps://rootdc1.myweb.com:636 根DN:dc=myweb,dc=com 提前感谢!
我试图通过将请求参数直接绑定到用户实体来简化我的代码,而不是一个字段一个字段地复制值,但是我似乎不能通过这种方式得到验证。 控制器: 验证器: 模型(注意嵌套对象用@Valid标注): 问题是只有密码和重新密码字段被正确验证,用户类中的验证注释被忽略,任何密码匹配的请求都通过,但它应该会出现错误。空密码或不同的密码会按预期出现错误。