2017-10-10 120 views
3

我从来没有这样做过,大多数教程没有提及如何处理.crt文件。将Spring添加到Spring Boot以启用SSL

我从GoDaddy购买了SSL证书,并在下载时选择了Tomcat作为平台。该zip文件包含3个文件:

dea08asdjakjawl.crt 
gd_bundle-g1-g1.crt 
gdig.crt.pem 

我在CentOS7服务器上运行Spring Boot应用程序(在带有嵌入式Tomcat的端口80上)。 (服务器在数字海洋运行,它有一个指定的域,并用简单的HTTP作品)

我想切换到https://something.com

所有教程提示,我必须有一个.jks或。 p12文件,但我无法将.crt文件转换为该文件。除此之外,我不确定2 .crt文件中的哪一个是我应该转换为.jks/.p12的文件。

我已经加入这个我application.yaml,但并没有帮助:

server:  
    port: 443 
    ssl: 
    enabled: true 
    key-alias: server 
    key-store: "cert.crt" 
    key-store-password: "***" 

我怎样才能改变我的运行春季启动的项目中使用该证书来接受HTTPS查询?

回答

2

所以正确的做法是以下几点:

我不得不重新建立新的企业社会责任,使用Java密钥存储来代替。

keytool -genkey -alias mydomain -keyalg RSA -keystore KeyStore.jks -keysize 2048 

然后一个新的CSR:

keytool -certreq -alias mydomain -keystore KeyStore.jks -file mydomain.csr 

这不得不重新发送给证书提供程序生成一个新的.cer文件。因此,他们送我回所提到的2个.CER文件,“捆绑”一个是中间.CER,我需要添加这样的:

keytool -import -trustcacerts -alias intermediate -file intermediate.crt -keystore KeyStore.jks 

然后实际的“长期为” .CER文件中像这样的:

keytool -import -trustcacerts -alias mydomain -file mydomain.crt -keystore KeyStore.jks 

那么这是一项能够被转换为P12这样的:

keytool -importkeystore -srckeystore <MY_KEYSTORE.jks> -destkeystore <MY_FILE.p12> -srcstoretype JKS -deststoretype PKCS12 -deststorepass <PASSWORD_PKCS12> -srcalias <ALIAS_SRC> -destalias <ALIAS_DEST> 

最后需要额外的线路application.properties,成为这样的事情:

server.port=443 
server.ssl.enabled=true 
security.require-ssl=true 
server.ssl.key-store=keystore.p12 
server.ssl.key-store-password=password 
server.ssl.key-alias=domain 
server.ssl.key-password=password 

而且它最后的工作。

+0

你好我收到以下异常,当我启动应用程序,java.lang.IllegalArgumentException异常:java.io.IOException的:DerInputStream.getLength():lengthTag = 109,太大了。有什么建议么? –

-1

如果使用Java,则使用参数-keystore使用keytool命令生成私钥和CSR。我承认我不知道是否以及如何将现有的导入密钥库(keytool允许导入证书),但可能有办法。

在最坏的情况下,使用密钥工具重新生成CSR并再次重新生成SSL/TLS证书 - 它应该不会产生额外的成本。

+0

我可以文件导入.CRT到一个新的密钥库,但其中2个证书我应该导入呢?如果密钥库是新鲜的和新的,它会是一个问题吗?我怎样才能从它制作.p12文件? – Macskasztorik

0

您需要创建密钥库和trusstore(或使用java提供的默认trusstore)。密钥库将包含您的私钥和服务器证书。信任库将包含您的ca证书。 创建一个p12密钥库 -

openssl pkcs12 -export -in [path/to/certificate] -inkey [path/to/privatekey] -certfile [path/to/ca/certificate ] -out keystore.p12 

输入密钥库的密码。在你的application.yaml中配置这个keystore。

对于信任条目时,如果使用Java的默认信任然后添加CA证书...... JRE/lib/security中/ cacerts的

keytool -import -trustcacerts -alias root -file ca.crt -keystore cacerts 

,或者可以创建trusstore然后在配置此信任您application.yaml

所有密钥工具命令,你可以很容易地找到网络转换/创建/导入/导出/列表...

提供3个文件,你可以检查哪些是而─ 1.应该是你的证书 2.应该是CA证书链

+0

是我的私钥(keystore需要).pem文件吗? 通过“你application.yaml配置此密钥库”你的意思是我应该将导出的.p12文件,并确定它在.yaml文件而不是.crt文件的位置?谢谢 – Macskasztorik

+0

它可以是pem或pkcs格式,你需要检查哪一个是你的私钥。如果您将csr发送给GoDaddy以创建证书,则必须创建私钥。如果godaddy也创造了你的钥匙,那么他们一定提供了你。 pem私钥以----- BEGIN PRIVATE KEY开头,以便您可以在文本编辑器中打开文件并检查。如果文件是pkcs格式,那么你可以使用openssl命令读取它们,或者使用openssl将它们转换为pem。 是,P12或JKS密钥库/ trustore需要使用,而不是直接的CRT文件 – Mukesh

相关问题