2017-10-10 122 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

相關問題