我正在嘗試使用com.sun.grizzly.SSLConfig.setKeyStoreFile()爲Grizzly設置SSL。它只接受一個字符串作爲輸入(不是InputStream或File)。我想使用JAR文件中的jks文件。如果我爲jar路徑傳遞一個字符串(例如C:\ dir \ my.jar!\ resources \ my.jks),它將失敗。除了從JAR中解壓文件外,我怎麼可以將這個JKS用於灰熊。設置Grizzly的keystore在jar中使用jks
1
A
回答
3
它沒有出現,你可以傳入文件名以外的任何東西。如果您查看source並查看validateConfiguration()
和createSSLContext()
方法,則會看到它將keyStoreFile
變量直接傳遞給FileInputStream
構造函數。
短期來看,您可能會停留在解壓縮並使用直接文件名。或者你可以重寫上面列出的兩個方法來正確驗證和初始化SSLContext。長期來看,我會提交一個補丁。
2
@ Kevin的想法奏效了!利用灰熊-servlet的Web服務器1.9.8,這裏是我的代碼:
SSLConfig ssl = new SSLConfig(){
@Override
public SSLContext createSSLContext() {
try{
//Load the keystore.
KeyStore keyStore=KeyStore.getInstance(KeyStore.getDefaultType());
InputStream keyStream=ClassLoader.getSystemResourceAsStream("my.jks");
//InputStream keyStream=new java.net.URL("jar:file:/C:/dir/my.jar!/my.jks").openStream();
keyStore.load(keyStream,"mypassword");
keyStream.close();
//Create the factory from the keystore.
String kmfAlgorithm=System.getProperty("ssl.KeyManagerFactory.algorithm",KeyManagerFactory.getDefaultAlgorithm());
KeyManagerFactory keyManagerFactory=KeyManagerFactory.getInstance(kmfAlgorithm);
keyManagerFactory.init(keyStore,"mypassword");
//Create the SSLContext
SSLContext sslContext=SSLContext.getInstance("TLS");
sslContext.init(keyManagerFactory.getKeyManagers(), null, null);
return sslContext;
}
//Wrap all Exceptions in a RuntimeException.
catch(Exception e){
throw new RuntimeException(e);
}
}
};
我花了幾個快捷方式(不記錄異常,使用幾個字符串常量,等等),但你可以得到的想法。
相關問題
- 1. 用openssl創建jks keystore
- 2. 從JKS KeyStore回讀ECPrivateKey
- 3. 設置Spring 4 RestTemplate以使用SSL(JKS)
- 4. 如何使用Groovy腳本設置Keystore
- 5. 如何將x509.pem pk8文件導入到jks-keystore中?
- 6. 如何使用Grizzly 2.2.X設置會話超時?
- 7. 如何在OpenStack Grizzly中使用python API 0.11.0設置圖像元數據?
- 8. 將GNU-CRYPTO gkr keystore轉換爲默認JKS
- 9. 以PKCS12格式爲tomcat/JKS Keystore轉換證書
- 10. 在JAR中保存用戶設置
- 11. Glassfish使用p12 keystore覆蓋keystore
- 12. Grizzly HttpServer中的ConnectionLimit
- 13. 在Robolectric測試中使用Android KeyStore
- 14. 使用KeyStore與.crt
- 15. 在jar中使用JAR
- 16. 我們應該將KeyStore和TrustStore指向相同的.jks文件嗎?
- 17. 在java classpath中設置lucene jar文件
- 18. 設置jar文件
- 19. 如何以編程方式將java jks keystore轉換爲pkcs12證書?
- 20. 設置JAR的類路徑
- 21. jar文件中的java設置字體
- 22. Grizzly HttpServer:爲每個響應設置永久標頭
- 23. Eclipse(Helios)使用哪個keystore?
- 24. 使用Grizzly作爲Web服務引擎
- 25. 更改默認.keystore位置
- 26. Keystore Eclipse ADT文件位置
- 27. Swagger + Jersey + Grizzly
- 28. 使用JBoss 6時,應該在我的pom.xml中將JTA jar設置爲什麼?
- 29. 運行jar,設置classpath
- 30. 在BouncyCastle-Keystore中導入.pfx