Jdbc 由于cloud foundry上的SSL错误,JaxB未解组?
我有一个web应用程序,使用thymeleaf、springboot、angularjs和oracle sql developer db 在本地,我可以连接并从oracle获取值。但当我将我的应用程序推到CloudFoundry时,我得到的状态是=500 错误 我正在解组的url具有不受信任的证书(“您的连接不安全”)。我将cacerts添加到我的jvm中,这允许它在本地工作。但我相信我需要将cacerts添加到CloudFoundry中。我怎样才能做到呢 SSL错误Jdbc 由于cloud foundry上的SSL错误,JaxB未解组?,jdbc,spring-boot,ssl-certificate,cloud-foundry,Jdbc,Spring Boot,Ssl Certificate,Cloud Foundry,我有一个web应用程序,使用thymeleaf、springboot、angularjs和oracle sql developer db 在本地,我可以连接并从oracle获取值。但当我将我的应用程序推到CloudFoundry时,我得到的状态是=500 错误 我正在解组的url具有不受信任的证书(“您的连接不安全”)。我将cacerts添加到我的jvm中,这允许它在本地工作。但我相信我需要将cacerts添加到CloudFoundry中。我怎样才能做到呢 SSL错误 ERR java.net
ERR java.net.ConnectException: Connection timed out
ERR at java.net.PlainSocketImpl.socketConnect(Native Method)
ERR at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
ERR at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
ERR at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
ERR at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
ERR at java.net.Socket.connect(Socket.java:589)
ERR at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668)
ERR at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
ERR at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
ERR at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173)
ERR at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
ERR at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
ERR at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
ERR at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
ERR at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1105)
ERR at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
ERR at rest.springframework.controllers.IndexController.getDetails(IndexController.java:59)
ERR at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
ERR at java.lang.reflect.Method.invoke(Method.java:498)
ERR at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999)
ERR at java.util.concurrent.FutureTask.get(FutureTask.java:205)
ERR at io.pivotal.springcloud.ssl.SslCertificateTruster.getUntrustedCertificateInternal(SslCertificateTruster.java:90)
ERR at io.pivotal.springcloud.ssl.SslCertificateTruster.getUntrustedCertificate(SslCertificateTruster.java:66)
ERR at io.pivotal.springcloud.ssl.CloudFoundryCertificateTruster.trustCertificatesInternal(CloudFoundryCertificateTruster.java:44)
ERR at io.pivotal.springcloud.ssl.CloudFoundryCertificateTruster.trustCertificates(CloudFoundryCertificateTruster.java:32)
ERR at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:420)
ERR at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:403)
ERR at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:394)
ERR at org.springframework.boot.SpringApplication.initialize(SpringApplication.java:261)
ERR at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:237)
ERR at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175)
ERR at rest.springframework.SpringBootWebApplication.main(SpringBootWebApplication.java:13)
ERR at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
ERR at java.lang.reflect.Method.invoke(Method.java:498)
ERR at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
ERR at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
ERR at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
新堆栈跟踪错误
ERR java.net.ConnectException: Connection timed out
ERR at java.net.PlainSocketImpl.socketConnect(Native Method)
ERR at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
ERR at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
ERR at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
ERR at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
ERR at java.net.Socket.connect(Socket.java:589)
ERR at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668)
ERR at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
ERR at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
ERR at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173)
ERR at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
ERR at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
ERR at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
ERR at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
ERR at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1105)
ERR at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
ERR at rest.springframework.controllers.IndexController.getDetails(IndexController.java:59)
ERR at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
ERR at java.lang.reflect.Method.invoke(Method.java:498)
ERR at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999)
ERR at java.util.concurrent.FutureTask.get(FutureTask.java:205)
ERR at io.pivotal.springcloud.ssl.SslCertificateTruster.getUntrustedCertificateInternal(SslCertificateTruster.java:90)
ERR at io.pivotal.springcloud.ssl.SslCertificateTruster.getUntrustedCertificate(SslCertificateTruster.java:66)
ERR at io.pivotal.springcloud.ssl.CloudFoundryCertificateTruster.trustCertificatesInternal(CloudFoundryCertificateTruster.java:44)
ERR at io.pivotal.springcloud.ssl.CloudFoundryCertificateTruster.trustCertificates(CloudFoundryCertificateTruster.java:32)
ERR at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:420)
ERR at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:403)
ERR at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:394)
ERR at org.springframework.boot.SpringApplication.initialize(SpringApplication.java:261)
ERR at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:237)
ERR at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175)
ERR at rest.springframework.SpringBootWebApplication.main(SpringBootWebApplication.java:13)
ERR at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
ERR at java.lang.reflect.Method.invoke(Method.java:498)
ERR at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
ERR at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
ERR at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
java.util.concurrent.FutureTask.get(FutureTask.java:205)处的错误
io.pivotal.springcloud.ssl.SslCertificateTruster.getUntrustedCertificateInternal(SslCertificateTruster.java:90)处出错
io.pivotal.springcloud.ssl.SslCertificateTruster.getUntrustedCertificate处出错(SslCertificateTruster.java:66)
io.pivotal.springcloud.ssl.CloudFoundryCertificateTruster.trustCertificatesInternal出错(CloudFoundryCertificateTruster.java:44)
io.pivotal.springcloud.ssl.CloudFoundryCertificateTruster.trustCertificates处出错(CloudFoundryCertificateTruster.java:32)
org.springframework.boot.SpringApplication.createspringfactorieinstances(SpringApplication.java:420)中出现错误
org.springframework.boot.SpringApplication.getspringfactorieinstances(SpringApplication.java:403)中出现错误
org.springframework.boot.SpringApplication.getspringfactorieinstances(SpringApplication.java:394)上的错误
org.springframework.boot.SpringApplication.initialize(SpringApplication.java:261)处出错
错误出现在org.springframework.boot.SpringApplication。(SpringApplication.java:237)
错误位于org.springframework.boot.SpringApplication.run(SpringApplication.java:1175)
rest.springframework.SpringBootWebApplication.main(SpringBootWebApplication.java:13)
sun.reflect.NativeMethodAccessorImpl.invoke处出错(NativeMethodAccessorImpl.java:62)
java.lang.reflect.Method.invoke处出错(Method.java:498)
org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)处出错
org.springframework.boot.loader.Launcher.launch(Launcher.java:87)上的错误
org.springframework.boot.loader.Launcher.launch(Launcher.java:50)上的错误
为什么这项工作只能在本地找到,而不能在云端找到?有多种方法可以将CA证书添加到容器中:
最简单的方法可能是使用
cf set env Java_OPTS'-Djavax.net.ssl.TrustStore=classpath:resources/config/TrustStore'
或使用应用程序清单中的“env”属性将Java VM指向应用程序中绑定的cacert文件。如果控制CloudFoundry平台,则可以使用以下方法:
1) 通过PCF运营经理或bosh添加证书
2) 将buildpack配置为使用自定义证书信任存储
cf set env app JBP_CONFIG_CONTAINER_CERTIFICATE_TRUST_STORE'{enabled:true}'
链接:
首先,您必须为下载的证书创建jks文件。您可以从JDK-bin中找到keytool keytool-importcert-file“your.cer”-keystore-your.jks-别名“testAlias” 将.jks文件作为资源添加到spring启动项目中 使用application.properties中的配置设置证书存储的路径和密码 例如: 从应用程序启动加载它 例如: 相关问题
“我需要云配置文件吗?”-是的,可能还需要防火墙规则,允许PCF连接到未在云上运行的Oracle数据库。@duffymo用于云配置。我是否只添加cloud.datasource.url等…我认为您还需要一个服务来连接到实例。另外,请检查您的日志。500错误意味着您的应用程序失败,日志中有一个堆栈跟踪来告诉您失败的原因。连接超时通常意味着无法访问主机。您可能需要检查防火墙规则等。我按照您所说的设置了环境。我重新启动了我的应用程序,但它仍然不工作。我仍然得到与上面堆栈跟踪相同的错误。我不认为这是您实际问题的答案,它看起来与网络相关,而与证书相关。但是,为了提供SSL/cert信任问题的其他解决方案,您可以从我提供的演示中查看这张幻灯片->@DanielMikusa我发现了SSL问题的具体证据。当我从我的应用程序中删除jaxB时,它工作了。它没有解决我的问题。我用命令提示符将.crt保存为.jks。在my app.properties文件中添加了凭据。并创建了一个类来加载ssl信任存储。从u提供的链接中学习您的示例。但我仍然收到同样的错误
ERR at java.util.concurrent.FutureTask.get(FutureTask.java:205)
ERR at io.pivotal.springcloud.ssl.SslCertificateTruster.getUntrustedCertificateInternal(SslCertificateTruster.java:90)
ERR at io.pivotal.springcloud.ssl.SslCertificateTruster.getUntrustedCertificate(SslCertificateTruster.java:66)
ERR at io.pivotal.springcloud.ssl.CloudFoundryCertificateTruster.trustCertificatesInternal(CloudFoundryCertificateTruster.java:44)
ERR at io.pivotal.springcloud.ssl.CloudFoundryCertificateTruster.trustCertificates(CloudFoundryCertificateTruster.java:32)
ERR at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:420)
ERR at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:403)
ERR at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:394)
ERR at org.springframework.boot.SpringApplication.initialize(SpringApplication.java:261)
ERR at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:237)
ERR at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175)
ERR at rest.springframework.SpringBootWebApplication.main(SpringBootWebApplication.java:13)
ERR at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
ERR at java.lang.reflect.Method.invoke(Method.java:498)
ERR at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
ERR at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
ERR at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
your.ssl.trust-store = your.jks
your.ssl.trust-password = changeit
public class LoadSSLTrustStore implements CommandLineRunner{
@Value("${your.ssl.trust-store}")
private String keyUrl;
@Value("${your.ssl.trust-password}")
private String keyPassword;
@Override
public void run(String... arg0) throws Exception {
try{
System.setProperty("javax.net.ssl.trustStore",CustomerMasterServiceApplication.class.getClassLoader().getResource(keyUrl).getFile());
System.setProperty("javax.net.ssl.trustStorePassword",keyPassword);
}catch(Exception e){
LOGGER.error("Error in loading SSL trusted key store for Connect to GCIN service",e);
}
}
}