Java 在Dropwizard中设置SSL
Java 在Dropwizard中设置SSL,java,ssl,https,keystore,dropwizard,Java,Ssl,Https,Keystore,Dropwizard,我正在尝试在服务器中设置SSL。我从GoDaddy获得了SSL,并从他们那里收到了两个文件,即: gd_束-g2-g1.crt b78********.crt(基本上是一个名为随机字符串的文件) 我在密钥库中添加了别名为root的gd_bundle-g2-g1.crt证书,并添加了另一个别名为域别名的证书 我的.yml配置文件如下所示:(我刚刚粘贴了.yml文件的相关部分) 问题是,每当我尝试启动服务器时,都会收到以下错误: java.lang.IllegalStateException: Un
我正在尝试在服务器中设置SSL。我从GoDaddy获得了SSL,并从他们那里收到了两个文件,即:
java.lang.IllegalStateException: Unable to retrieve certificate chain
当我在上面的.yml中将validateCerts设置为false时,由于明显的原因,此错误会消失,但当我尝试访问URL时,我得到:
我似乎陷入了困境。我的服务器可以完美地使用http,但https无法正常工作!:( 考虑到我的最终目标是让https正常工作,以及我当前的场景,我有以下问题:
感谢您的帮助。问题终于解决了!下面是我如何让它工作的(希望这能帮助那些很难了解如何使用Dropwizard使SSL工作的人)
b78*********.crt
和gd_bundle-g2-g1.crt
(确保b78*********.crt
的内容在另一个文件之前)。从现在开始,让我们将该文件称为all_combined.crtPS:我不能100%确定每一步做什么,或者是否每一步都是必需的。但是经过一个小时又一个小时的搜索,我终于找到了一些工作,我一定会在以后有时间的时候读到这方面的细节。在那之前,我希望这能帮那些被困在上面的人解除障碍。对于其他即将到来的人,我用另一种方式在Dropwizard/Linux中解决了这个问题 首先生成密钥:
keytool -genkey -alias <aliasname> -keyalg RSA -keystore keystore.jks -keysize 2048
keytool-genkey-alias-keyalg RSA-keystore keystore.jks-keysize 2048
然后生成您的CSR:
keytool -certreq -alias <aliasname> -file csr.txt -keystore keystore.jks
keytool-certreq-alias-file csr.txt-keystore keystore.jks
打开csr.txt并复制所有内容。转到GoDaddy粘贴它并下载这两个.crt文件
然后连接b78*********.crt和gd_bundle-g2-g1.crt的内容(确保b78*********.crt的内容在另一个文件之前)。从现在起,让我们将该文件称为all_combined.crt
最后,将您的信任证书与.jks结合使用:
keytool -import -trustcacerts -keystore keystore.jks -storepass <keystorepassword> -alias <aliasname> -file all_combined.crt
keytool-import-trustcacerts-keystore keystore.jks-storepass-alias-file all_combined.crt
然后在.yml文件中,让以下内容:
applicationConnectors:
- type: http
port: 8080
- type: https
port: 8443
keyStorePath: keystore.jks
keyStorePassword: <keystorepassword>
keyStoreType: JKS
supportedProtocols: [TLSv1, TLSv1.1, TLSv1.2]
应用程序连接器:
-类型:http
端口:8080
-类型:https
港口:8443
keyStorePath:keystore.jks
密钥密码:
keyStoreType:JKS
支持的协议:[TLSv1、TLSv1.1、TLSv1.2]
就是这样,玩得开心 我以前在捆绑证书方面遇到过问题。如果你打开它,它应该有两个证书。尝试导入每一个individually@Austin:捆绑包中有3个条目。我按照上面所说的做了,现在它说:java.lang.Exception:在密钥库中找不到证书。我使用命令:keytool-list-keystore myKeyStore.jks查找了我的密钥库,它向我显示了4个条目(3个来自bundle,1个单独存在)您是否也导入了
b78********.crt
?@Austin是的,我导入了。难道我不应该这样做吗?那应该是有效的:/你如何生成你的密钥?在第二个命令中,我得到一个错误:无法加载私钥当您执行validateCerts时,此配置是否有效?true?您提到的csr.txt文件是什么?@zafrani当您执行此命令时生成:keytool-certreq-alias-file csr.txt-keystore keystore.jk如果您在尝试合并信任时收到任何类型的错误certs,请运行这个命令keytool-exportcert-alias-keystore keystore.jks-keyalg RSA-file all_combined.crt为什么我需要文件all_combined.crt在docker yml文件中时我只写keystore.jks文件?因为你需要将手动合并的all_combined.crt导入linux。
keytool -import -trustcacerts -keystore keystore.jks -storepass <keystorepassword> -alias <aliasname> -file all_combined.crt
applicationConnectors:
- type: http
port: 8080
- type: https
port: 8443
keyStorePath: keystore.jks
keyStorePassword: <keystorepassword>
keyStoreType: JKS
supportedProtocols: [TLSv1, TLSv1.1, TLSv1.2]