2017-05-30 64 views
0

我們有一個Java適配器,用於查詢mongodb數據庫並向客戶端提供JSON響應。部署在bluemix上的Java適配器的SSL配置和撰寫mongodb

當部署到本地服務器試圖查詢上bluemix一撰寫的MongoDB我們自然得到SSLHandshakeException,這是通過手動導入通過撰寫的MongoDB我們當地mobilefirst密鑰庫作爲拋出的異常提供的證書解決提示使用密鑰工具:

mfp-server\usr\servers\mfp\resources\security\key.jks 

通過mfp UI控制檯創建密鑰庫並沒有像文檔建議的那樣解決此問題。

但是,我們對如何在部署在bluemix上的移動基礎上執行相同的操作感到困惑。

我們嘗試通過接口添加密鑰庫,在適配器描述符文件中創建連接策略並在jaxrs應用程序類中使用System屬性。

System.setProperty("javax.net.ssl.trustStore",getClass().getClassLoader().getResource("keystorefile").getPath()); 
System.setProperty("javax.net.ssl.trustStorePassword", "keystorepassword"); 

無工作,到目前爲止,同爲本地實例,更新key.jks是我們得到了mfserver和composeMongoDB工作的唯一途徑。

我們使用MobileFirst 8和MongoDB的Java驅動程序版本3.2.2

而且我們使用這個命令導入撰寫的證書添加到自簽名的一個,我們創建了:

keytool -importcert -keystore <keystore name> -file <certificate_file_path> 

回答

0

你可以嘗試使用spring-boot-ssl-truststore-gen和寫一些代碼以編程方式添加組合鍵到信任:

public static final String SSL_TRUST_STORE_SYSTEM_PROPERTY = "javax.net.ssl.trustStore"; 
public static final String SSL_TRUST_STORE_PASSWORD_SYSTEM_PROPERTY = "javax.net.ssl.trustStorePassword"; 

private String certificate = "-----BEGIN CERTIFICATE-----" + 
          "..." + 
          "-----END CERTIFICATE-----"; 

static { 
    DefaultTrustStoreAppender trustStoreAppender = new DefaultTrustStoreAppender(); 
    final TrustStoreInfo trustStoreInfo = trustStoreAppender.append(CertificateFactory.newInstance(certificate)); 
    System.setProperty(SSL_TRUST_STORE_SYSTEM_PROPERTY, trustStoreInfo.getTrustStorefFile().getAbsolutePath()); 
    System.setProperty(SSL_TRUST_STORE_PASSWORD_SYSTEM_PROPERTY, trustStoreInfo.getPassword()); 
} 

您需要這在pom.xm升(或備選):

<repositories> 
    <repository> 
     <id>jcenter</id> 
     <url>http://jcenter.bintray.com </url> 
     <snapshots> 
     <enabled>true</enabled> 
     <updatePolicy>never</updatePolicy> 
     <checksumPolicy>warn</checksumPolicy> 
     </snapshots> 
     <releases> 
     <enabled>true</enabled> 
     <checksumPolicy>warn</checksumPolicy> 
     </releases> 
    </repository> 
</repositories> 

<dependency> 
    <groupId>com.orange.clara.cloud.boot.ssl-truststore-gen</groupId> 
    <artifactId>spring-boot-ssl-truststore-gen</artifactId> 
    <version>2.0.21</version> 
</dependency>