2017-04-17 139 views
0

我想爲我的春季啓動應用程序啓用SSL。春季啓動:RSA的作品,JKS不

我產生這個命令一個密鑰:

keytool -genkey -alias myapp -keyalg RSA -keystore tomcat.keystore 

application.properties包含:

server.port = 8443 
server.ssl.key-store = classpath:tomcat.keystore 
server.ssl.key-store-password = ### 
server.ssl.key-password = !&* 
server.ssl.enabled=true 

首先,我創造了JKS密鑰存儲用這個命令:

keytool -genkey -alias tomcat -keystore keystore.jks -validity 3650 

但我收到訪問時出錯https://localhost:8443

​​

爲什麼它現在正在工作,而不是呢?

我還有其他一些問題: 1.我看了一些教程,他們都建議把密鑰庫文件放在src/main/resources。這真的是個好主意嗎?

2.什麼是key-store-passwordkey-password是什麼?

3.這是我們需要做的所有事情來啓用SSL嗎?那麼crtcer文件呢?他們在哪裏使用?

+0

RSA keystore呢?你是什​​麼意思,它不是用來製作ssl密鑰的? –

回答

1

關於localhost uses an unsupported protocol.確保服務器支持客戶端可以支持的密碼。

This site can’t provide a secure connection,該消息可能是因爲連接不可信!當然。在這裏你只需告訴客戶忽略它。

您還在JKS文件中設置別名,請確保您告訴服務器加載正確的別名。

將JKS置於src/main/resources可能是一個好習慣,但不是必需的,只要確保它安全可用。

crtcer沒有明確要求對於Java,但一旦你通過CA得到簽名的證書,您將導入證書到JKS讓服務器發現中間和根證書(如果存在,根本不基本)

一旦您通過keytool生成密鑰,只需保持文件安全。您需要生成CSR值,並且可信證書導入也需要相同的jKS。

我也建議通過JSSE獲得一些OpenSSL(如果可能的話)。

+0

將資源置於'resources'文件夾下意味着它被交付給用戶?如果是,爲什麼將密鑰庫交付給客戶端是一個好主意? –

+0

來吧!沒有親愛的,服務器當然不會發送私鑰!否則它不被稱爲SSL。你甚至會要求客戶的證書批准連接。所以客戶端需要安裝一個證書然後詢問請求(這是非常罕見的)@ArianHosseinzadeh – 2017-04-17 02:54:14

+0

@ArianHosseinzadeh一個重要的事情是,您必須確保您提到的資源文件夾不能公開訪問。在服務器旁邊不會公開密鑰,但它可以通過FTP,HTTP等訪問,所以只要將它保存在安全的地方。 – 2017-04-17 02:57:29